c语言统计字符串中指定子串出现的次数
时间: 2023-05-31 19:19:40 浏览: 228
c语言 统计字符出现次数
### 回答1:
可以使用循环遍历字符串,每次比较字符串中的一段子串是否与指定的子串相同,如果相同则计数器加一。最后返回计数器的值即可。
具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <string.h>
int countSubstring(char *str, char *subStr) {
int count = ;
int len1 = strlen(str);
int len2 = strlen(subStr);
for (int i = ; i <= len1 - len2; i++) {
if (strncmp(str + i, subStr, len2) == ) {
count++;
}
}
return count;
}
int main() {
char str[] = "hello world, hello c language";
char subStr[] = "hello";
int count = countSubstring(str, subStr);
printf("'%s'中出现'%s'的次数为:%d\n", str, subStr, count);
return ;
}
```
输出结果为:
```
'hello world, hello c language'中出现'hello'的次数为:2
```
### 回答2:
在C语言中,统计字符串中指定子串出现的次数可以通过遍历字符串的方法来实现。具体实现方法如下:
首先,我们需要定义一个计数器用来存储指定子串在字符串中出现的次数,初始值为0。然后,我们需要使用一个循环来遍历字符串中的每个字符。在每次循环中,我们需要将指定子串与当前遍历到的子串进行比较,如果相同,则计数器加1。最后,循环结束后,返回计数器的值即可。
下面是代码实现过程:
#include <stdio.h>
#include <string.h>
int countSubstring(char *str, char *substr)
{
int count = 0;
int len1 = strlen(str);
int len2 = strlen(substr);
for(int i = 0; i <= len1 - len2; i++)
{
if(strncmp(str+i, substr, len2) == 0)
{
count++;
}
}
return count;
}
int main()
{
char str[] = "hello world, hello C language";
char substr[] = "hello";
int count = countSubstring(str, substr);
printf("'%s'中出现'%s'的次数为:%d", str, substr, count);
return 0;
}
在这段代码中,countSubstring函数用来统计字符串str中出现子串substr的次数。首先,我们获取字符串str和子串substr的长度。然后,我们使用一个循环来遍历字符串str中的每个字符,并使用strncmp函数来比较指定子串与当前遍历到的子串是否相同。如果相同,则计数器count加1。最后,返回计数器count的值。
通过运行上述代码,我们可以得到输出结果为:'hello world, hello C language'中出现'hello'的次数为:2。可以看出,代码实现成功,函数能够正确地统计字符串中指定子串的出现次数。
### 回答3:
在C语言中统计字符串中指定子串出现的次数,可以通过循环遍历整个字符串,逐个判断子串是否出现,再记录出现次数的方法来实现。
具体来说,可以使用两层循环,外层循环遍历整个字符串,内层循环用来匹配与子串长度相等的字符串片段是否与子串相同。若相同,则计数器加一,然后外层循环继续向后遍历。
以下是一个简单的代码示例:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], sub[20];
int count, len1, len2, i, j;
printf("请输入字符串:");
gets(str);
printf("请输入子串:");
gets(sub);
len1 = strlen(str);
len2 = strlen(sub);
count = 0;
for (i = 0; i <= len1 - len2; i++)
{
for (j = 0; j < len2; j++)
{
if (str[i+j] != sub[j])
break;
}
if (j == len2)
count++;
}
printf("子串'%s'在字符串'%s'中出现了%d次。\n", sub, str, count);
return 0;
}
```
在上面的代码中,我们定义了两个字符数组 `str` 和 `sub` 来分别存储输入的字符串和子串。变量 `len1` 表示字符串长度,`len2` 表示子串长度。变量 `i` 和 `j` 分别用来作为循环计数器,变量 `count` 用来记录出现次数。
程序中的外层循环从字符串的开头依次往后遍历,内层循环从当前位置开始匹配同样长度的子串与 `sub` 是否相同。若相同,则计数器加一,表示找到了一个子串出现的位置。
最后,输出统计结果,显示子串在字符串中出现的次数。
阅读全文