C语言实现在一段字符串里寻找第n个指定字符串
时间: 2024-09-30 19:02:59 浏览: 57
在C语言中,要在一段字符串中寻找特定子串的第n次出现,你可以使用循环和字符串处理函数,例如`strstr()`或者自定义遍历算法。下面是一个基本的示例,展示了如何使用`strstr()`函数寻找子串:
```c
#include <stdio.h>
#include <string.h>
// 定义找到子串后的偏移量
size_t find_nth_substring(char *haystack, char *needle, int n) {
size_t pos = 0;
while (true) {
// 使用 strstr 查找子串的位置
pos = strstr(haystack, needle) - haystack; // 减去haystack是因为返回的是相对于haystack的地址
// 如果找不到子串,或者已经是第n+1次,跳出循环
if (!pos || ++n > 1) break;
// 移动到下一个子串开始位置继续搜索
haystack += pos + strlen(needle);
}
return pos;
}
int main() {
char str[] = "Hello, World! This is a test string with 'World' multiple times.";
char sub_str[] = "World";
int n = 3; // 寻找"World"的第三次出现
size_t result = find_nth_substring(str, sub_str, n);
if (result == (size_t)-1) {
printf("Substring not found after %d occurrences.\n", n);
} else {
printf("Found the substring at position %zu.\n", result);
}
return 0;
}
```
在这个例子中,如果找到了第n次子串,则返回子串起始位置;如果没有找到或者超过指定次数,则返回`-1`表示未找到。
阅读全文