printf
Cで使用するときに%記号をどのようにエスケープしますか?
printf("hello\%"); /* not like this */
printf
Cで使用するときに%記号をどのようにエスケープしますか?
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:関数の(and ) ファミリの形式を指定する文字列で、実際に
はエスケープしません。%
printf()
scanf()
(および) 関数ファミリーの%
は、変換指定を開始します。変換指定の規則の 1 つは、変換指定子としての a (変換指定を開始した の直後) により、引数が変換されずに文字が書き込まれることを示しています。printf()
scanf()
%
%
'%'
文字列には、実際には 2'%'
文字が含まれています (エスケープ文字とは対照的に"a\bc"
、 は 3 つの非 null 文字を含む"a%%b"
文字列です。 は 4 つの非 null 文字を含む文字列です)。
double%%
を使用します。
printf("hello%%");
このような:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
%% を使用できます:
printf("100%%");
結果は次のとおりです。
100%
C のバックスラッシュは、文字列内の文字をエスケープするために使用されます。文字列は特殊文字として認識さ%
れないため、エスケープは必要ありません。printf
は別の問題です。使用%%
して 1 つを印刷します%
。
はい、使用printf("hello%%");
して完了です。
単純に 2 回使用できます%
。つまり、"%%"
例:
printf("You gave me 12.3 %% of profit");
ダブル '%' は ".Format(…) でも機能します。例 (iDrawApertureMask == 87、fCornerRadMask == 0.05 を使用):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
csCurrentLine; "%ADD87C, 0.0500*% (文字列の内容) の望ましい値と期待値を示します。 "