我是一名初学者程序员(请原谅这个非常基本的问题),我正在通过 Kernighan 和 Ritchie 的书“C 编程语言”学习 C。
我从书中复制了这个程序,它编译得很好,但是当给出输入时,程序什么也不做。
#include <stdio.h>
int main() {
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%1d\n", nc);
}
输出应该是输入中的字符数,但什么也没有发生
最佳答案
遇到EOF
时会打印输入的字符数(=文件结尾)条件。
如果您通过终端提供输入,则没有自然的文件结尾
因此您需要使用特殊的键盘快捷键来指示它,通常是 Ctrl+Z
在 Windows 上和 Ctrl+D
在 Unix 系统(Linux、MacOs...)上。 (Windows 似乎还要求您在 Ctrl+Z 之前和之后都键入 Enter。Ctrl+Z 之前的换行符算作另一个字符,这实际上意味着 Windows 与 Unix 不同,似乎不允许你的文本文件不以换行符结尾,至少对于没有 cygwin 的 mingw gcc 来说是这样。)
如果您通过重定向提供输入文件,如 ./a.out < some_file
所示,那么您不必担心这一点,因为文件系统文件有自然的结束。
关于c - 程序可以编译,但在提供输入时不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57132256/