这个例子来自Dennis Ritchie和Brian Kernighan的“The C Programming Language”。应该输入用户输入的字符,然后当EOF被声明时(使用我的Mac,它是ctrl-D),它会结束程序并显示输入的字符数量。相反,它将字符数量的实际值加倍。我错过了什么吗?谢谢。为什么这个字符在C计数程序中将字符的值加倍?
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
因为你也在计算'newlines'。 'getchar()'读取*每个*输入。 –
也用int格式说明符打印一个long。编译器应该已经警告过你。 – Unimportant
除了你指出的实际问题之外,你的'main'函数应该有一个返回类型。此外,就像@ user1320881所说,你的printf格式说明符是错误的。它在GCC中产生以下警告:'格式'%d'需要类型为'int'的参数,但参数2类型为'long int' –