You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动