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

C语言统计字符串中子串出现次数代码运行错误求助

统计子串出现次数代码问题修正

现有代码错误点

  • 硬编码了两个字符串内容,没有实现题目要求的动态输入两个字符串的逻辑,无法适配OJ的测试用例输入
  • 循环逻辑嵌套错误,printf和return 0被错误放在了循环内部的代码块中,程序第一次匹配到子串就会直接输出结果并终止,不会遍历完整个母串完成所有匹配统计
  • 内置的测试母串和题目给出的示例输入不一致,本地测试都无法得到正确的预期结果

修正后代码

#include <stdio.h>
#include <string.h>

int main()
{
    char str[1024], substr[128];
    // 读取输入的两个字符串
    scanf("%s %s", str, substr);
    char* ptr = strstr(str, substr);
    int count = 0;

    while (ptr != NULL) {
        count++;
        // 指针后移1位,避免漏算重叠匹配的情况
        ptr = strstr(ptr + 1, substr);
    }
    // 输出逻辑移到循环外,等所有匹配统计完成再输出
    printf("%d", count);
    return 0;
}

逻辑说明

用strstr函数每次从当前指针位置查找子串,找到后计数加1,将指针向后移动1位后继续查找,直到找不到子串退出循环,最终输出总计数。针对题目给出的示例输入aabbaabbaacc和子串aa,最终统计结果为3,符合预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:30:03