int frequency(char* substr, char* str) { // 请在此添加代码,实现函数frequency /********** Begin *********/ int k = 1, sum = 0; int l = strlen(str); while (k) { char* p = strstr(substr, str); if (p != nullptr) { for (int i = 0; i < l; i++) { *p = '0'; p++; } sum++; } else k = 0; } return sum; }
时间: 2024-01-17 21:15:15 浏览: 64
实现strstr()函数1
这段代码有一些问题,需要进行修改。首先,strstr 函数的参数顺序应该是 str 在前,substr 在后;其次,在循环中应该使用 str 而不是 substr 进行查找;最后,在循环中应该将 p 指向下一个可能的匹配位置,而不是直接将其向后移动 l 个位置。
修改后的代码如下:
```
int frequency(char* substr, char* str) {
int count = 0;
int len_sub = strlen(substr);
char* p = str;
while ((p = strstr(p, substr)) != NULL) {
count++;
p += len_sub;
}
return count;
}
```
这个函数使用了 strstr 函数在长串中查找子串出现的位置,并将 p 指向下一个可能的匹配位置,直到找不到为止。最后返回子串出现的次数。
阅读全文