在C中使用printf
时,如何逃避%号?
printf("hello\%"); /* not like this */
答案 0 :(得分:380)
您可以通过发布双重'%'来逃避它:%%
使用您的示例:
printf("hello%%");
转义'%'符号仅适用于printf。如果你这样做:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
将打印:This is a's value: %%
答案 1 :(得分:34)
正如其他人所说,%%将逃脱%。
但请注意,您绝不应该这样做:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
每当您必须打印字符串时,始终始终使用
进行打印printf("%s", c)
防止嵌入的%导致问题[内存违规,段错误等]
答案 2 :(得分:29)
puts("hello%");
如果字符串中有格式:
printf("%.2f%%", 53.2);
如评论中所述,puts
会在输出中附加\n
而fputs
则不会。
答案 3 :(得分:9)
自己......
printf("hello%%"); /* like this */
答案 4 :(得分:7)
挑剔:
您并没有真正转义指定%
(和printf()
)函数系列格式的字符串中的scanf()
。
%
(和printf()
)系列函数中的scanf()
启动转换规范。转换规范的规则之一规定,%
作为转换说明符(紧跟在启动转换规范的%
之后)会导致写入'%'
字符而不转换参数。
字符串真的里面有2 '%'
个字符(与转义字符相反:"a\bc"
是一个包含3个非空字符的字符串; "a%%b"
是一个字符串包含4个非空字符的字符串)。
答案 5 :(得分:6)
使用双%%
答案 6 :(得分:4)
像这样:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
答案 7 :(得分:3)
C中的反斜杠用于转义字符串中的字符。字符串不会将%识别为特殊字符,因此不需要转义。 Printf是另一回事:使用%%打印一个%。
答案 8 :(得分:2)
是的,使用printf(“hello %%”);它已经完成了。
答案 9 :(得分:2)
答案 10 :(得分:2)
您只需使用%
两次,即"%%"
示例:
printf("You gave me 12.3 %% of profit");
答案 11 :(得分:2)
您可以使用%%:
printf("100%%");
结果是:
100%
答案 12 :(得分:0)
双倍'%'也适用于" .Format(...)。
示例(使用iDrawApertureMask == 87,fCornerRadMask == 0.05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
给出(字符串内容)csCurrentLine的期望值和期望值;
"%ADD87C,0.0500 *%"
答案 13 :(得分:-5)
使用此:
#include <stdio.h>
printf("hello%s%s");
可以在此处找到与printf一起使用的格式说明符的完整列表: