我是 C 编程语言的新手。
如果输入为 EOF
或 -1,程序不会从 for 或 while 循环停止。
程序如下:
#include <stdio.h>
int main() {
double nc;
for (nc = 0; getchar() != EOF; ++nc) {
printf("%.0f\n", nc);
}
}
根据我的理解,如果我在终止中输入EOF
或-1,那么for循环将停止,因为-1或EOF
使条件为假。
关于同一示例的另一个问题:如果我不使用嵌套循环代码,如下所示:
for (nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f", nc);
没有任何错误或警报,但似乎函数 printf
未按预期工作。它只是输出我输入的内容。
最佳答案
您的程序将在文件末尾停止,这就是 EOF
的含义。
要从终端输入文件结尾,请在 unix 或 Mac/OS 上键入 Ctrl-D,并在Windows 系统。
Ctrl-D 是通过在按住 Ctrl 键的同时按 Ctrl 和 D 来获得的。
请注意,double
变量不适合简单计数器,您应该选择 int
类型。
另请注意,程序不会一次接收一个字符:从终端读取时可能会以行为基础进行缓冲,而从文件读取时可能会以 block 为基础进行缓冲。发布后,您的程序将从终端读取一行输入,并一次读取多行输出,每个字符输入一个,包括换行符。
关于C程序遇到EOF或-1不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44843028/