【发布时间】:2017-12-17 00:07:12
【问题描述】:
#include <stdio.h>
main() {
long nc;
nc = 0;
while (getchar() != -1)
++nc;
printf("%ld\n", nc);
}
以上是我在 K&R C 书中的代码,例如 1.5.2,但我更改了代码,因此 getchar() 正在检查 -1。但是,当输入负数 (-1) 时,代码不会停止在 getchar() 中读取。如何让代码停止,为什么它没有停止?
【问题讨论】:
-
...您不应该键入
-1...这是EOF代码,如just about every description 中所述。 -
看,
-1是两个字符。getchar()将首先返回-(45),然后是1(49)。 -
getchar()得到一个char- 单个字符。这就是为什么它无法读取“-1”,一个2个字符的字符串 -
使用
EOF或您选择的单个字符修复 -
在终端,您可以通过键入合适的字符来指示 EOF,通常是 Unix 上的 control-D 和 Windows 上的 control-Z。如果您在此之前没有输入换行符(回车),则需要按两次控制字符。当然,这是有原因的,但解释起来很麻烦。
标签: c