C语言行数统计程序输入困惑求助:无输出且持续等待输入
解决你的C语言行数统计程序输入问题
嘿,我一眼就看出问题所在啦!你的代码逻辑其实是完全正确的,但它之所以一直卡着要求输入、不输出结果,是因为程序在等待你发送结束输入的信号(EOF)。
咱们来看你的循环条件:while ((c = getchar()) != EOF) —— 这个循环会持续读取你输入的每一个字符,直到接收到EOF(End of File,文件结束符)才会退出,然后执行后面的printf输出行数。
你只需要在输入完测试内容后,发送EOF信号就行,不同系统的操作方式不一样:
- Windows系统:输入完内容后,按下
Ctrl + Z,然后按回车键,程序就会立刻输出统计的行数。 - Linux/macOS系统:输入完内容后,直接按下
Ctrl + D就能触发EOF,程序马上输出结果。
另外,如果你不想手动输入测试内容,也可以用文件重定向的方式让程序读取文件内容,比如编译好程序后,在终端执行:
./count_lines < test.txt
这样程序读完test.txt里的内容后会自动退出循环,输出行数。
最后再贴一下你的代码(已经格式化好了),确认逻辑没问题:
#include <stdio.h> /* count lines in input */ main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) if (c == '\n') ++nl; printf("%d\n", nl); }
内容的提问来源于stack exchange,提问作者Abhishek N




