用C语言写代码不使用指针)给定一个长字符串和一个短字符串,找出短串在长串中出现的次数,并输出每次长串中出现短串的起始位置。(可用字符串相关丽数简化编程工作) 测试集合 输入。程
时间: 2024-10-25 19:12:26 浏览: 27
在C语言中,我们可以使用数组和循环结构,结合`strstr()`函数来查找子串在原串中的位置,而无需直接使用指针。这个函数会在原字符串中查找子字符串,并返回第一次找到子字符串的位置。如果没有找到,它会返回NULL。下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
void find_substring(const char* long_str, const char* short_str, int count[]) {
size_t pos = 0;
while ((pos = strstr(long_str + pos, short_str)) != NULL) {
count[0]++;
printf("Substring found at position %ld\n", (long)pos);
// 移动搜索起点到下一个可能出现的位置
pos += strlen(short_str);
}
}
int main() {
const char* long_string = "Hello, world! This is a test string with substring.";
const char* short_string = "substring";
int occurrences[1] = {0}; // 初始化计数器
find_substring(long_string, short_string, occurrences);
if (occurrences[0] == 0) {
printf("Substring not found.\n");
} else {
printf("Substring found %d times.\n", occurrences[0]);
}
return 0;
}
```
在这个例子中,`find_substring` 函数会遍历 `long_str`,并在每个找到子串的地方增加 `count` 的值并打印位置。`main` 函数则负责提供输入字符串和初始化计数器。
阅读全文