strstr() 函数用于在一个字符串中查找另一个字符串出现的位置。
该函数的声明如下:
char *strstr(const char *haystack, const char *needle);
函数的参数含义如下:
- haystack:主串(被查找的字符串)
- needle:子串(要查找的字符串)
函数的返回值:
- 如果找到 needle 则返回 needle 第一次出现的地址
- 如果未找到则返回 NULL
下面是两个使用实例:
示例一
假设现在要查找字符串 “hello world” 中是否包含字符串 “world”,代码如下:
#include <stdio.h>
#include <string.h>
int main() {
char *str = "hello world";
char *substr = "world";
char *result = strstr(str, substr);
if (result == NULL) {
printf("No match found.\n");
} else {
printf("Match found at position: %ld\n", result - str + 1);
}
return 0;
}
输出结果:
Match found at position: 7
说明 “world” 的位置是从第 7 个字符开始。
示例二
假设现在要从一个字符串数组中查找子串 “Hello” 所在的位置,代码如下:
#include <stdio.h>
#include <string.h>
int main() {
char *arr[] = {"Hello, world!", "Goodbye, world!", "Hello, again!"};
char *substr = "Hello";
int index = -1;
int i;
for (i = 0; i < 3; i++) {
char *result = strstr(arr[i], substr);
if (result != NULL) {
index = i;
break;
}
}
if (index == -1) {
printf("No match found.\n");
} else {
printf("Match found in string %d.\n", index + 1);
}
return 0;
}
输出结果:
Match found in string 1.
说明子串 “Hello” 在数组的第一个字符串中被找到了。