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

C语言行计数程序输入后无法终止,按下回车持续换行求助

问题分析与解决:C语言统计行数程序无法终止

问题描述

这是出自《C The Programming Language》的统计输入行数程序,代码如下:

#include <stdio.h>

int main(void)
{
    long c, nl;

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

运行程序输入内容后按回车键,程序只会不断换行,无法终止并输出统计结果。

原因说明

程序的终止条件是getchar()读取到EOF(文件结束符),而回车键仅输入换行符\n,只会触发行数统计逻辑,不会触发程序终止。

解决方法

1. 输入EOF终止程序

根据操作系统不同,输入EOF的操作如下:

  • Windows系统:按下 Ctrl + Z,再按回车键
  • Linux/macOS/Unix系统:按下 Ctrl + D

2. 修正格式符匹配问题

代码中nl是long类型,但printf使用了对应int类型的%d格式符,可能导致输出错误,建议改为%ld:

printf("%ld\n", nl);

内容的提问来源于stack exchange,提问作者Mahmoud Rehan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:49:55