题目描述 从键盘输入两个字符串,用空格隔开,计算字符串中子串出现的次数。 输入格式 两个字符串,第二个字符串为子串。 输出格式 一个整数。 输入输出样例 输入 abcdefgabc ab 输出 2用c语言写
时间: 2025-01-26 19:10:58 浏览: 51
题目要求编写一个C语言程序,该程序接收用户输入的两个字符串,其中第二个字符串是子串,然后计算第一个字符串中这个子串出现的次数。下面是一个简单的C语言解决方案,使用了标准库函数`strstr()`来查找子串:
```c
#include <stdio.h>
#include <string.h>
int count_substring(const char* str1, const char* substr) {
int count = 0;
size_t len1 = strlen(str1);
size_t len2 = strlen(substr);
// 搜索整个str1,找到子串就加一
while ((size_t pos = strstr(str1, substr)) != NULL) {
count++;
// 移动到下一个子串开始位置
str1 = pos + len2;
}
return count;
}
int main() {
char str1[100], substr[100];
printf("请输入第一个字符串(子串): ");
fgets(str1, sizeof(str1), stdin); // 考虑到fgets会多取一个换行符,所以这里需要减去1
str1[strcspn(str1, "\n")] = '\0'; // 去掉末尾的换行符
printf("请输入子串: ");
fgets(substr, sizeof(substr), stdin);
substr[strcspn(substr, "\n")] = '\0'; // 去掉末尾的换行符
int result = count_substring(str1, substr);
printf("子串 '%s' 在 '%s' 中出现了 %d 次。\n", substr, str1, result);
return 0;
}
```
在这个代码中,`count_substring` 函数负责查找和计数,`main` 函数负责获取用户的输入并调用`count_substring`。注意,由于`fgets`会多读一个换行符,所以在结束时我们需要去掉它。运行此程序,按照提示输入两个字符串即可得到结果。
阅读全文
相关推荐


















