此示例来自 Dennis Ritchie 和 Brian Kernighan 所著的《C 编程语言》。它应该接受用户输入给出的字符,然后当声明 EOF 时(使用我的 Mac,它是 ctrl-D),它会结束程序并显示输入的字符数。相反,它使字符数量的实际值加倍。我错过了什么吗?谢谢。
#include <stdio.h>
main()
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
最佳答案
它不会使值加倍,例如,如果您键入:
a
b
c
Ctrl+D
您将看到6
,因为每个字符后面都有一个换行符
,例如:
a\n
b\n
c\n
Ctrl+D
\n
被视为一个字符(如果没记错的话,在 mac 中 换行符
字符是 \r
)。
如果您输入:
abc
Ctrl+D
由于 abc
序列末尾的换行符
,您将拥有 4 个字符。
注意:由于其他成员注意到您在 long
类型中使用了错误的格式字符,它必须是 %ld
但您正在使用%1d
(1而不是l)我认为您复制代码时出现了错误。
希望能回答您的问题。
关于c - 为什么这个 C 语言字符计数程序将字符的值加倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41402623/