c中带有百分比字符的奇怪格式说明符

时间:2015-12-05 18:39:47

标签: c printf output percentage format-specifiers

我在c示例中有一个与“printf”指令相关的问题:

printf("Percentage character: %%",10);

输出正确:百分比字符:%

为什么是格式说明符(%%)?在那边10那是什么?为什么编译器说printf的参数太多了?

我试图以另一种方式显示百分比字符:

printf("Percentage character: %c",putch(37));

然而,输出并不是很好:%百分比charcater:%

为什么在句子之前出现百分比字符?

2 个答案:

答案 0 :(得分:2)

%%中使用

printf转换规范来打印单个%(不转换任何参数)。

例如:

 printf("10%%\n");

打印

 10%

现在在你的例子中:

printf("Percentage character: %%",10);

没问题,但printf第二个参数被忽略了。它相当于:

printf("Percentage character: %%");

关于你的上一个例子:

printf("Percentage character: %c",putch(37));

printfputch都将字符写入标准输出,因此首先评估putch并写入一个字符,然后printf将一系列字符写入标准输出。使用:

     printf("Percentage character: %c", 37);

如果您不想要第一个%或更好:

     printf("Percentage character: %c", '%');

如果你想独立于字符集(37是ASCII中的%,但可以在其他字符集上有另一个值)。

答案 1 :(得分:2)

为什么格式说明符(%%)

考虑一下您希望通过%打印printf()的情况。如果您只是给%,它将被视为某些格式说明符的一部分。因此,要打印%,您需要执行%%

那个10那边有什么?为什么编译器说printf的参数太多了?

10只是printf()的另一个参数。由于没有匹配该参数的格式说明符,因此您获得 too many arguments for printf 消息

在此

printf("Percentage character: %c",putch(37));

putch()来自标准库conio.h,Linux上不支持它。正如Wikipedia所说,它不是由C标准定义的。

相关问题