编写一个函数totsubstrnum(char *str,char *substr),它的功能是统计子字符串substr在字符串str中出现的次数
时间: 2024-02-27 08:53:25 浏览: 57
好的,下面是函数的实现:
```c
int totsubstrnum(char *str, char *substr) {
int count = 0;
int str_len = strlen(str);
int substr_len = strlen(substr);
for (int i = 0; i <= str_len - substr_len; i++) {
if (strncmp(str + i, substr, substr_len) == 0) {
count++;
}
}
return count;
}
```
函数的参数是两个字符串指针 `str` 和 `substr`,返回值是子字符串 `substr` 在字符串 `str` 中出现的次数。
函数的实现比较简单,就是遍历字符串 `str` 的所有可能的子字符串,如果找到了一个与 `substr` 相同的子字符串,就将计数器 `count` 加 1。最后返回计数器的值即可。
注意,这里使用了 C 语言的库函数 `strncmp` 来比较两个字符串的前缀是否相同。`strncmp` 函数的第一个参数是一个指向字符串的指针,第二个参数是另一个指向字符串的指针,第三个参数是要比较的字符数。如果前缀相同,就返回 0,否则返回一个非零值。
希望能够帮助到你!
相关问题
c++编写一个函数 int fun(char *str,char*substr),该函数可以统计子字符串substr在母字符串str中出现的次数,并将该次数作为函数值返回。
好的,以下是C++代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int fun(char *str, char *substr){
int count = 0;
int str_len = strlen(str);
int substr_len = strlen(substr);
for(int i=0; i<=str_len-substr_len; i++){
bool match = true;
for(int j=0; j<substr_len; j++){
if(str[i+j] != substr[j]){
match = false;
break;
}
}
if(match){
count++;
}
}
return count;
}
int main(){
char str[100], substr[100];
cin >> str >> substr;
int count = fun(str, substr);
cout << count << endl;
return 0;
}
```
函数`fun`接收两个参数:原字符串`str`和子字符串`substr`,返回子字符串在原字符串中出现的次数。函数内部使用两层循环遍历原字符串,依次比较每个子串是否等于目标子字符串,如果相等则计数器加1。最后返回计数器的值即可。
在主函数中,你可以输入原字符串和子字符串,程序会调用`fun`函数计算出子字符串在原字符串中出现的次数,并输出结果。
编写一个函数intcountsubstr(charstr[],charsubstr[]),功能为统计字符串substr在字符串str中出现的次数。主函数中分别输入两个字符串,调用函数,实现对子字符串出现次数的查找。输入母字符串,子字符串输出子字符串在母字符串中出现的次数
下面是一个简单的 C 语言代码实现:
```
#include <stdio.h>
#include <string.h>
int countsubstr(char str[], char substr[]) {
int count = 0;
int len1 = strlen(str);
int len2 = strlen(substr);
for (int i = 0; i <= len1 - len2; i++) {
int j;
for (j = 0; j < len2; j++) {
if (str[i + j] != substr[j])
break;
}
if (j == len2)
count++;
}
return count;
}
int main() {
char str[100];
char substr[100];
printf("请输入母字符串:");
gets(str);
printf("请输入子字符串:");
gets(substr);
int count = countsubstr(str, substr);
printf("子字符串在母字符串中出现的次数为:%d\n", count);
return 0;
}
```
其中,`countsubstr` 函数接受两个参数,分别是母字符串和子字符串,返回子字符串在母字符串中出现的次数。函数中使用两个循环,第一个循环遍历母字符串,第二个循环遍历子字符串,如果有一个字符不匹配,则退出循环。如果子字符串遍历完了,说明匹配成功,计数器加一。主函数中输入母字符串和子字符串,调用 `countsubstr` 函数,输出子字符串在母字符串中出现的次数。
阅读全文