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

