这个例子来自Dennis Ritchie和Brian Kernighan的"The C Programming Language".它应该包含用户输入给出的字符,然后当声明EOF时(使用我的Mac,它是ctrl-D),它结束程序并显示输入的字符数量.相反,它将字符数量的实际值加倍.我错过了什么吗?谢谢.
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
Run Code Online (Sandbox Code Playgroud)
它不会使值加倍,例如,如果键入:
a
b
c
Ctrl+D
Run Code Online (Sandbox Code Playgroud)
你会看到6因为line break每个角色之后有一个像:
a\n
b\n
c\n
Ctrl+D
Run Code Online (Sandbox Code Playgroud)
\n被认为是一个角色(如果没有错,那就是mac中的line break角色\r).
如果你输入:
abc
Ctrl+D
Run Code Online (Sandbox Code Playgroud)
由于序列line break的末尾,您将有4个字符abc.
注意:正如其他成员注意到你使用了错误的格式化字符long类型,它必须是%ld你正在使用%1d(1而不是l)我认为你复制代码时是一个错误.
希望能回答你的问题.