指针计算子串出现的次数
时间: 2023-11-03 20:23:28 浏览: 107
可以通过遍历字符串并使用指针计算子串出现的次数。具体的做法是,使用两个指针分别指向字符串的开头和结尾,然后在字符串中移动这两个指针,每次比较指针所指向的子串与目标子串是否相同,如果相同则计数器加一,最后返回计数器的值即可。
以下是一个示例代码:
```
int count_substring(char *str, char *substr) {
int count = 0;
int len_str = strlen(str);
int len_substr = strlen(substr);
char *p = str;
char *q = p + len_substr - 1;
while (q < str + len_str) {
if (strncmp(p, substr, len_substr) == 0) {
count++;
}
p++;
q++;
}
return count;
}
```
其中,`str` 表示原始字符串,`substr` 表示目标子串,函数返回目标子串在原始字符串中出现的次数。
相关问题
编写程序,在主函数中调用函数,计算字符串中某指定子串出现的次数。 要求:使用指向字符串和要查找的子串的指针,返回次数。
好的,这是一个计算字符串中指定子串出现次数的函数的 C++ 代码实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int countSubstr(char *str, char *substr) {
int cnt = 0;
int len = strlen(substr);
while (*str != '\0') {
if (strncmp(str, substr, len) == 0) {
cnt++;
}
str++;
}
return cnt;
}
int main() {
char str[100];
char substr[100];
cout << "请输入字符串:";
cin.getline(str, 100);
cout << "请输入子串:";
cin.getline(substr, 100);
int cnt = countSubstr(str, substr);
cout << "子串在字符串中出现的次数为:" << cnt << endl;
return 0;
}
```
这个函数使用了指向字符串和要查找的子串的指针,利用 `strncmp` 函数进行子串匹配,然后统计出现次数。在主函数中,通过 `getline` 函数读入字符串和子串,调用 `countSubstr` 函数计算出现次数,并输出结果。
用C语言编写程序,在主函数中调用函数,计算字符串中某指定子串出现的次数。 要求:使用指向字符串和要查找的子串的指针,返回次数。
好的,这是一个计算字符串中指定子串出现次数的 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int countSubstr(char *str, char *substr) {
int cnt = 0;
int len = strlen(substr);
while (*str != '\0') {
if (strncmp(str, substr, len) == 0) {
cnt++;
}
str++;
}
return cnt;
}
int main() {
char str[100];
char substr[100];
printf("请输入字符串:");
fgets(str, 100, stdin);
printf("请输入子串:");
fgets(substr, 100, stdin);
int cnt = countSubstr(str, substr);
printf("子串在字符串中出现的次数为:%d\n", cnt);
return 0;
}
```
这个程序使用了指向字符串和要查找的子串的指针,利用 `strncmp` 函数进行子串匹配,然后统计出现次数。在主函数中,通过 `fgets` 函数读入字符串和子串,调用 `countSubstr` 函数计算出现次数,并输出结果。注意使用 `fgets` 函数来读入字符串和子串,而不是 `scanf` 函数,避免输入过长导致的缓冲区溢出问题。
阅读全文