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

C语言字符统计代码无输出求助:输入后未返回统计结果

问题分析与修复方案

你的代码核心问题出在循环的赋值和条件判断上,导致无法正确统计字符,自然无法输出结果,具体问题和修复如下:

  • 循环逻辑错误
    原代码里while ((c = scanf("%c", &c)) != EOF)完全错误:scanf("%c", &c)的返回值是成功读取的字符数量(正常为1,遇到文件结束符时是EOF),你把这个返回值赋值给了c,导致c存的不是输入的字符,而是scanf的状态值,统计逻辑完全失效,循环也无法正常终止。
    正确写法有两种:

    1. 用scanf正确判断返回值:while (scanf("%c", &c) != EOF)
    2. 改用getchar()更简洁,它直接返回读取的字符,遇到EOF时返回EOF:while ((c = getchar()) != EOF)
  • 冗余分号
    循环结束后的};多了一个分号,虽然不影响语法,但属于多余代码,建议去掉。

修复后的完整代码:

#include <stdio.h>

int main(void)
{
    int blanks = 0, digits = 0, letters = 0, others = 0;
    char c;

    printf("请输入内容,输入结束按Ctrl+Z(Windows)或Ctrl+D(Linux):\n");

    while ((c = getchar()) != EOF)
    {
        if (c == ' ')
            ++blanks;
        else if (c >= '0' && c <= '9')
            ++digits;
        else if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
            ++letters;
        else
            ++others;
    }

    printf("blanks = %d, digits = %d, letters = %d, others = %d\n",
           blanks, digits, letters, others);
    return 0;      
}

运行说明:输入任意内容,结束时按对应系统的结束键,程序就会输出各类字符的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:35:06