C言語のprintfにおける%(パーセント)記号をエスケープするには?
-
13-09-2019 - |
質問
printf
を使用した場合、どのように%記号をエスケープしますか?
printf("hello\%"); /* not like this */
解決
%%
あなたは、このような二重の「%」を掲載することにより、それを逃れることができます
あなたの例を使用します:
printf("hello%%");
'%' 記号をエスケープするだけのprintfのためです。そうした場合:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
これは、印刷されます:This is a's value: %%
他のヒント
は、%%は%をエスケープします。
ただし、これを行うべきではありませんことを。
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
あなたは、文字列を印刷する必要がありたびに、常に、常に、常に使用してそれを印刷
printf("%s", c)
などのメモリ違反、セグメンテーション違反、]問題を引き起こすから埋め込み%を防ぐために、
自体に...
printf("hello%%"); /* like this */
Nitpick:
あなたは本当に機能の%
(およびprintf()
)家族のためのフォーマットを指定する文字列でscanf()
をエスケープしないでください。
%
は、機能のprintf()
(及びscanf()
)ファミリーで、変換仕様を開始します。変換仕様のためのルールの一つは、(すぐに変換指定を開始した%
以下)の変換指定子として%
が'%'
文字が変換引数なしで書き込ませることを述べています。
列の実際の(文字のエスケープとは対照的に:'%'
3つの以外のヌル文字を含む文字列である。"a\bc"
4つの以外のヌル文字を含む文字列である)内の2つの"a%%b"
文字を有している。
ダブル%%を使用する
このよう
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
Cでのバックスラッシュは文字列内の文字をエスケープするために使用されます。文字列は特殊文字として%を認識しないので、逃げ場は必要ではないだろう。 printfのは別の問題です:百分の一を印刷するには%%を使用
。うん、使用のprintf( "ハロー%%")。そしてそれが行われます。
あなたは単に%
二回使用することができ、それは"%%"
である
例:
printf("You gave me 12.3 %% of profit");
あなたは%%を使用することができます:
printf("100%%");
結果は次のとおりです。
100%
あなたは%%
を印刷するため%
を使用する必要があり、誤った書式指定子を使用しています。あなたのコードは次のようになります。
printf("hello%%");
続きを読むすべてのフォーマット指定C のに使用される。
二重の '%'「は.Format(...)にも動作します。
(iDrawApertureMaskの== 87、fCornerRadMaskの== 0.05を有する)の例:
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
csCurrentLine(文字列の内容)の所望の期待値を与えます。
"%のADD87C、0.0500 *%"