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
相关产品推荐
相关产品推荐

