c语言输入一个主串sou,再输入一个子串sub,在在主串中查找子串的总的次数。 若iiiisssbbbssisssbadsssi中is出现的次数是2
时间: 2024-02-25 22:56:05 浏览: 27
好的,这是一个简单的字符串匹配问题,我可以帮你解决。以下是一个C语言程序,可以实现在主串中查找子串的总的次数:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char sou[100], sub[100];
int count = 0, i, j, flag;
printf("请输入主串:");
gets(sou);
printf("请输入子串:");
gets(sub);
for(i = 0; i <= strlen(sou) - strlen(sub); i++)
{
flag = 1;
for(j = 0; j < strlen(sub); j++)
{
if(sou[i+j] != sub[j])
{
flag = 0;
break;
}
}
if(flag == 1)
{
count++;
}
}
printf("子串在主串中出现的次数为:%d", count);
return 0;
}
```
你可以将主串和子串输入程序中,程序会输出子串在主串中出现的次数。
相关问题
输入一个主串sou,再输入一个子串sub,在在主串中查找子串的总的次数。 若iiiisssbbbssisssbadsssi中is出现的次数是2
可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char sou[100], sub[100];
int count = 0;
printf("请输入主串:");
fgets(sou, 100, stdin);
printf("请输入子串:");
fgets(sub, 100, stdin);
int sou_len = strlen(sou);
int sub_len = strlen(sub);
for (int i = 0; i < sou_len - sub_len + 1; i++) {
if (strncmp(sou + i, sub, sub_len) == 0) { // 如果匹配成功
count++;
}
}
printf("子串在主串中出现的次数是:%d\n", count);
return 0;
}
```
使用 `fgets()` 函数从标准输入中读取主串和子串,然后使用循环遍历主串中的所有可能的子串,使用 `strncmp()` 函数来判断当前子串是否与目标子串匹配。如果匹配成功,则将计数器加一。最后输出匹配的次数。
输入一个字符串和子串,统计子串在该字符中出现次数
以下是 Python 代码实现:
```python
def count_substring(string, sub):
count = 0
start = 0
while True:
start = string.find(sub, start) # 从 start 开始查找子串 sub
if start == -1: # 若没有找到,则退出 while 循环
break
count += 1
start += 1 # 从下一个字符开始继续查找
return count
```
这个函数接受两个字符串作为参数:`string` 表示原始的字符串,`sub` 表示要查找的子串。
函数中定义了一个 `count` 变量来记录子串出现的次数,初始值为 0。另外,还定义了一个 `start` 变量来记录查找的起始位置,初始值为 0。
接下来进入一个 while 循环。在循环中,我们使用 `string.find(sub, start)` 方法来在 `string` 中查找子串 `sub`,其中 `start` 参数表示查找的起始位置。如果没有找到子串,`string.find()` 方法会返回 -1,此时退出 while 循环。如果找到了子串,那么我们就将 `count` 加一,并将 `start` 设置为下一个字符的位置,即 `start += 1`。
最后返回 `count` 即可。