如何在 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语言中如何控制只在某一个位置打印?比如进度百分比数字的显示。

如何逃避C的printf中的%(百分号)符号?

如何在 jmeter 聚合报告命令行中打印 95 和 99 百分位数?

ueditor编辑器,Ctrl+C复制样式时,width设为百分比会被转换为“px”,请问如何屏蔽此功能

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

如何在 mysqli 准备语句中插入百分比符号 %? [复制]