如何逃避C的printf中的%(百分号)符号?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何逃避C的printf中的%(百分号)符号?相关的知识,希望对你有一定的参考价值。
在C中使用printf
时如何逃避%符号?
printf("hello\%"); /* not like this */
您可以通过发布双重'%'来逃避它:%%
使用你的例子:
printf("hello%%");
转义'%'符号仅适用于printf。如果你这样做:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s
", a);
它将打印:This is a's value: %%
你可以简单地使用%
两次,即"%%"
例:
printf("You gave me 12.3 %% of profit");
您可以使用 %%:
printf("100%%");
结果是:
100%
如果您使用的格式说明符不正确,则应使用%%
打印%
。你的代码应该是:
printf("hello%%");
阅读更多all format specifiers used in C。
双'%'也适用于“.Format(...)。示例(使用iDrawApertureMask == 87,fCornerRadMask == 0.05):csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
给出(字符串内容)csCurrentLine的期望值和期望值;”%ADD87C,0.0500 * %”
用这个:
#include <stdio.h>
printf("hello%s%s");
可以在此处找到与printf一起使用的格式说明符的完整列表:
http://www.mekong.net/tech/printf.htm
正如其他人所说,%%将逃脱%。
但请注意,您永远不应该这样做:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
每当您必须打印字符串时,始终始终始终使用它进行打印
printf("%s", c)
防止嵌入的%导致问题[内存违规,段错误等]
puts("hello%");
如果字符串中有格式:
printf("%.2f%%", 53.2);
正如评论中所指出的那样,puts
将
附加到输出中,而fputs
则没有。
与自己...
printf("hello%%"); /* like this */
鸡蛋里挑骨头:
你并没有真正逃脱字符串中的%
,它指定了printf()
(和scanf()
)函数族的格式。
%
(和printf()
)函数族中的scanf()
启动了转换规范。转换规范的规则之一声明%
作为转换说明符(紧跟在启动转换规范的%
之后)导致写入'%'
字符而不转换参数。
该字符串内部确实有2个'%'
字符(与转义字符相反:"ac"
是一个包含3个非空字符的字符串; "a%%b"
是一个包含4个非空字符的字符串)。
使用双%%
像这样:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
C中的反斜杠用于转义字符串中的字符。字符串不会将%识别为特殊字符,因此不需要转义。 Printf是另一回事:使用%%打印一个%。
是的,使用printf(“hello %%”);它已经完成了。
以上是关于如何逃避C的printf中的%(百分号)符号?的主要内容,如果未能解决你的问题,请参考以下文章