在 C 中使用时如何转义 % 符号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:
您并没有真正转义指定(and ) 系列函数%
格式的字符串中的。printf()
scanf()
(and ) 函数族%
中的, 启动转换规范。转换规范的规则之一指出, a作为转换说明符(紧跟在开始转换规范的 之后)导致写入字符时不转换任何参数。printf()
scanf()
%
%
'%'
该字符串内部确实有 2 个'%'
字符(与转义字符相反:"a\bc"
是具有 3 个非空字符"a%%b"
的字符串;是具有 4 个非空字符的字符串)。
使用双%%
:
printf("hello%%");
像这样:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
您可以使用 %%:
printf("100%%");
结果是:
100%
C 中的反斜杠用于转义字符串中的字符。字符串不会被识别%
为特殊字符,因此不需要转义。printf
是另一回事:用于%%
打印一个%
.
是的,使用printf("hello%%");
它就完成了。
您可以简单地使用%
两次,即"%%"
例子:
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*% "