C语言计算字符串中子串出现的次数,输入两个字符串,以回车隔开,其中母串在前,子串在后。
时间: 2024-11-20 16:42:55 浏览: 9
C语言求两个字符串的最长公共子串
5星 · 资源好评率100%
在C语言中,你可以通过遍历的方式计算一个子串在另一个字符串中出现的次数。下面是一个简单的示例程序,它使用`strstr()`函数来查找子串在母串中的位置,然后逐次减去子串长度并检查是否找到了新的匹配,直到找不到为止:
```c
#include <stdio.h>
#include <string.h>
int count_substring(char *str, char *substr) {
int index = 0;
while ((index = strstr(str, substr)) != NULL) { // 使用strstr找子串位置
index += strlen(substr); // 跳过找到的部分
str = index; // 更新搜索起点
}
return index == NULL ? 0 : -1; // 如果没找到返回0,已找到返回-1
}
int main() {
char mother[100], substring[100];
fgets(mother, sizeof(mother), stdin); // 输入母串
fgets(substring, sizeof(substring), stdin); // 输入子串
// 去除行尾的换行符
mother[strlen(mother)-1] = '\0';
substring[strlen(substring)-1] = '\0';
int occurrences = count_substring(mother, substring);
if (occurrences >= 0) {
printf("子串 '%s' 在母串 '%s' 中出现了 %d 次.\n", substring, mother, occurrences);
} else {
printf("子串 '%s' 在母串 '%s' 中未找到.\n", substring, mother);
}
return 0;
}
```
在这个程序中,用户需要通过键盘输入两个字符串,程序会输出子串在母串中出现的次数,如果没有找到则表示没有出现。
阅读全文