这个例子来自" C编程语言"作者:Dennis Ritchie和Brian Kernighan。它应该包含用户输入给出的字符,然后当说明EOF时(使用我的Mac,它是ctrl-D),它结束程序并显示输入的字符数量。相反,它将字符数量的实际值加倍。我错过了什么吗?谢谢。
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
答案 0 :(得分:5)
例如,如果键入:
,则值不会加倍a
b
c
Ctrl+D
您会看到6
因为每个字符后都有line break
,如:
a\n
b\n
c\n
Ctrl+D
\n
被视为一个字符(如果没有错,则在line break
字符为\r
的mac中)。
如果您输入:
abc
Ctrl+D
由于line break
序列末尾的abc
,您将有4个字符。
注意:,因为其他成员发现您使用了long
类型的错误格式字符,但它必须是%ld
,但您使用的是%1d
(1而不是l)我认为复制代码时会出错。