【发布时间】:2020-02-15 07:49:44
【问题描述】:
我是 C 语言的初学者,现在正在尝试计算输入的字符数。
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
这是我按照教科书写的,但是printf函数似乎不起作用。
另外,这个程序似乎没有完成,因为提示没有出现。
我不知道这本书的内容是否足够老了。
你能告诉我这段代码有什么问题吗?
【问题讨论】:
-
这看起来像是来自 K&R 的代码。还有其他人遇到了同样的问题,将
%ld误解为%1d。鉴于nc的类型为long,您需要%ld(字母ell)。这本书包含一个 ell 而不是一个。使用main()表明该书已过时(1988 年为第二版)。 C99 需要返回类型,并在参数列表中首选void:int main(void)。 -
您好密切的选民,我建议不要将此问题视为错字。 John 从 OP 的角度巧妙地解释了一个完全不同的问题。
-
如果您启用警告(您应该始终这样做),编译器会为您指出问题,例如“警告:格式‘%d’需要‘int’类型的参数,但参数2的类型为‘long int’”。使用 GCC,您可以使用 -Wall 标志。
标签: c while-loop printf getchar