如何逃避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(或fputs):

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中的%(百分号)符号?的主要内容,如果未能解决你的问题,请参考以下文章

C语言 用printf总出错

Java中printf的使用

请问在c语言中如何输出百分数?

C 基本语法

如何在Spring YAML配置中逃避SpEL美元符号?

在C语言中的百分比怎么精确到小数和保留整数四舍五入?