如何在 C 中打印百分号(%)? [复制]
Posted
技术标签:
【中文标题】如何在 C 中打印百分号(%)? [复制]【英文标题】:How do I print the percent sign(%) in C? [duplicate] 【发布时间】:2013-07-20 10:26:35 【问题描述】:为什么这个程序不打印%
符号?
#include <stdio.h>
main()
printf("%");
getch();
【问题讨论】:
那么您阅读文档了吗?百分号是怎么说的? 这个问题可以通过谷歌轻松回答。 OP 可以使用他的逻辑,即 ('//
) 是/
的字符常量并应用了它。 printf
上不是也有手册页吗?
也许您的意思是说'\\'
是\
的字符常量? /
的字符常量是 '/'
。
【参考方案1】:
本主题中没有解释为什么要打印百分号。必须键入 %%
而不是例如带有百分比的转义字符 - \%
。
来自comp.lang.c FAQ list · Question 12.6:
用 printf 打印 % 符号很棘手的原因是 % 是 本质上是 printf 的转义字符。每当 printf 看到一个 %,它 期望它后面跟着一个告诉它下一步做什么的字符。 两个字符序列 %% 被定义为打印单个 %。
要了解为什么 % 不能工作,请记住反斜杠 \ 是 编译器的转义字符,并控制编译器如何解释 编译时的源代码字符。然而,在这种情况下,我们想要 控制 printf 在运行时如何解释其格式字符串。目前 就编译器而言,转义序列 % 未定义,并且 可能会导致单个 % 字符。不太可能 \ 和 % 都可以通过 printf,即使 printf 是 准备特别对待\。
因此,必须键入 printf("%%");
才能打印单个 %
的原因是 printf 函数中定义的。 %
是 printf 的转义字符,\
是编译器的转义字符。
【讨论】:
感谢您提供原因。【参考方案2】:你的问题是你必须改变:
printf("%");
到
printf("%%");
或者你可以使用 ASCII 码写:
printf("%c", 37);
:)
【讨论】:
C 不需要 ASCII。printf("%c", 37);
不可移植。
@H2CO3 是的,但我喜欢这个答案,因为他给了一个额外的技巧!
@GrijeshChauhan 我没有说我不喜欢这个答案,这是一个很好的答案。我只是指出前面提到的 sn-p 是不可移植的。
@GrijeshChauhan 当然。没有冒犯:)
为什么不用'%'
而不是37
?【参考方案3】:
试着用这种方式打印出来
printf("%%");
【讨论】:
这个答案可能比这更有用。它没有提供任何参考,让读者了解他们的错误。【参考方案4】:使用"%%"
。 man page 描述了这个要求:
%
写入了“%”。没有参数被转换。完整的转换规范是'%%
'。
【讨论】:
以上是关于如何在 C 中打印百分号(%)? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
C语言中如何控制只在某一个位置打印?比如进度百分比数字的显示。
如何在 jmeter 聚合报告命令行中打印 95 和 99 百分位数?