2017-05-19 7 views
1

文字列に~が含まれていると、標準出力に出力できないようです。Erlang - fwriteチルダ

> A = "/.git". 
> io:fwrite(A). 
/.gitok 

> B = "~/.git". 
> io:fwrite(B). 
** exception error: bad argument 
in function io:format/3 
    called as io:format(<0.50.0>,"~/.git",[]) 

チルダ付きの文字列を標準出力するにはどうすればよいですか?文字列が~が含まれている場合

答えて

2

をあなたは、フォーマットを必要としないときio:fwrite/1,2,3io:format/1,2,3を使用しないでください。これらの機能は、Cでprintf()またはfprintf()が必要な場所を意図しています。出力済みのiodataを出力したい場合は、io:put_chars/1,2を使用してください。

0

あなたはP〜制御配列を使用して、標準に

~ → erl 
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] 

Eshell V8.3 (abort with ^G) 
1> B = "~/.git". 
"~/.git" 
2> io:fwrite("~p",[B]). 
"~/.git"ok 
3> io:fwrite("~p~n",[B]). 
"~/.git" 
ok 
4> 
3

をチルダ文字列を印刷することができ、私はそれに標準のプリントアウトに見えることはできません。フォーマット出力に

、あなたは~で始まるフォーマットシーケンスを含む文字列を構築します。 Erlangはあなたの文字列にフォーマットのシーケンスが含まれていると思っています。あなたが出力リテラル~にアーランをしたい場合は、別の~でそれを逃れることができます。

22> io:format("~~/.git~n"). 
~/.git 
ok