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

C语言统计字符串指定字符出现次数的代码修正问询

代码问题排查与修正

你的代码存在三处核心问题,按如下方式修改即可正常运行:

  • 未读取用户输入:声明userChar和userString后没有编写输入接收逻辑,两个变量存储的是内存中的随机脏数据,后续所有计算都基于无效值,结果自然不对。
  • 循环条件写错:C语言没有原生字符串类型,字符数组存储的字符串以\0作为结束标记,你写的i < userChar是把目标字符的ASCII编码值当成了循环长度,比如小写n的ASCII值是110,循环会执行110次,远超你定义的50长度数组边界,属于非法内存访问,输出结果完全随机。
  • 输出格式不符合要求:现有逻辑只打印了计数和's,没有输出输入的目标字符,也没有按规则拼接格式。

修正后可直接运行的代码

#include <stdio.h>

int main(void) {
    char userChar;
    char userString[50];
    int count = 0;

    // 读取输入:%c前的空格用于跳过缓冲区残留的换行、空格等空白字符
    scanf(" %c %49s", &userChar, userString);

    // 遍历到字符串结束符\0为止,统计匹配字符的次数
    for (int i = 0; userString[i] != '\0'; i++) {
        if (userString[i] == userChar) {
            count++;
        }
    }

    // 按要求输出结果
    printf("%d %c", count, userChar);
    if (count != 1) {
        printf("'s");
    }

    return 0;
}

注:scanf里%49s是限制最多读49个字符,给字符串末尾的\0留位置,避免数组越界;这里不需要引入string.h头文件,因为不需要调用strlen函数,靠结束符判断遍历终点更直接。


效果验证

  • 输入n Monday时,程序统计到字符n出现1次,输出1 n,和预期一致
  • 输入s mississippi时,程序统计到字符s出现4次,输出4 s's,符合复数格式要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:18:41