You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C语言实现新行计数器?代码运行异常求助

C语言换行计数器返回0的问题解决

你的代码逻辑本身是正确的,问题大概率出在输入操作细节或终端的EOF触发逻辑上,以下是具体排查点和解决办法:

常见原因与解决方式

  • 输入文本未包含换行符:如果输入内容时全程没按回车键,或者最后一行输入完直接按Ctrl+D结束,程序自然统计不到换行。解决办法是每输入一行内容后按回车键(包括最后一行),再按Ctrl+D触发EOF。
  • 终端Ctrl+D的触发逻辑:在多数类Unix终端中,第一次按Ctrl+D仅将当前输入缓冲区的内容发送给程序;若缓冲区非空(比如输入了一行内容但没回车),程序会读取内容但不会触发EOF,只有缓冲区为空时按Ctrl+D才会触发EOF。如果最后一行没回车,需要连续按两次Ctrl+D:第一次发送当前行内容,第二次触发EOF,但这种情况最后一行无换行,计数依然不会增加。

代码规范修正

另外,你的代码不符合C99及以后的标准,main()应显式声明为int main()并返回状态值,修正后的代码如下:

#include <stdio.h>

int main()
{
    int c, nl;
    nl = 0;
    while ((c = getchar()) != EOF)
        if (c == '\n')
            ++nl;
    printf("%d\n", nl);
    return 0;
}

内容的提问来源于stack exchange,提问作者William Gwinell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:35:23