如何逃避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 */
挑剔:结果
你真的不逃避,用于指定%
(和printf()
)系列函数的格式字符串中的scanf()
。
在%
,在printf()
(和scanf()
)系列函数,启动转换规范。一个用于转换规格的规则指出,一个%
作为转换指定(立即启动该转换规格的%
以下)使'%'
字符不带参数的转换被写入。
的字符串的确实强>具有内部2个'%'
字符(相对于逸出字符:"a\bc"
是与3个非空字符的字符串; "a%%b"
是具有4个非空字符的字符串)。
使用双%%
像这样:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
用C反斜杠用于逃避串字符。字符串不承认%为一个特殊字符,因此没有逃脱是必要的。 printf的是另一回事。使用%%打印一页%
烨,用printf( “你好%%”);和它的完成。
可以简单地使用%
两次,即"%%"
示例:
printf("You gave me 12.3 %% of profit");
可以使用%%:
printf("100%%");
其结果是:
100%
在双 '%' 工作也在” .Format(...)。
实施例(与iDrawApertureMask == 87,fCornerRadMask == 0.05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
给出了(在字符串内容)csCurrentLine期望和预期值;
“%ADD87C,0.0500 *%”