我在c示例中有一个与“printf”指令相关的问题:
printf("Percentage character: %%",10);
输出正确:百分比字符:%
为什么是格式说明符(%%)?在那边10那是什么?为什么编译器说printf
的参数太多了?
我试图以另一种方式显示百分比字符:
printf("Percentage character: %c",putch(37));
然而,输出并不是很好:%百分比charcater:%
为什么在句子之前出现百分比字符?
答案 0 :(得分:2)
%%
中使用 printf
转换规范来打印单个%
(不转换任何参数)。
例如:
printf("10%%\n");
打印
10%
现在在你的例子中:
printf("Percentage character: %%",10);
没问题,但printf
第二个参数被忽略了。它相当于:
printf("Percentage character: %%");
关于你的上一个例子:
printf("Percentage character: %c",putch(37));
printf
和putch
都将字符写入标准输出,因此首先评估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标准定义的。