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

C语言统计字符串空格数:代码运行结果始终为0,求问题排查

代码问题排查与修复

你的代码有两个关键问题导致结果始终为0:

  • 判断空格的条件完全错误
    你写的if (sentence[i] == 0)是在匹配字符串结束符'\0',但strlen(sentence)返回的是字符串中第一个'\0'之前的字符长度,循环范围i < strlen(sentence)根本不会包含'\0',这个条件永远不会触发,count自然一直是0。要统计空格,应该判断sentence[i] == ' '(注意是空格字符,不是数字0)。

  • scanf格式符错误
    scanf("%[^\n]s", sentence)里的s是多余的,%[^\n]本身就是完整的格式说明符,用来读取直到换行的所有字符。多余的s会导致scanf尝试匹配输入中的s字符,大概率匹配失败,可能连目标字符串都读不进来。正确的写法是scanf("%[^\n]", sentence);,如果程序运行前缓冲区有残留的换行符,还可以加个getchar()先清理缓冲区。

修复后的完整代码:

#include<stdio.h>
#include<string.h>
int main(void){
    
    char sentence[100];
    int count=0;
    // 清理可能残留的换行符
    getchar();
    scanf("%[^\n]", sentence);
    
    for(int i=0;i<strlen(sentence);i++){
        if (sentence[i] == ' '){
            count++;
        }
    }
    printf("%d", count);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:40:07