在C语言中,字符串处理是很重要的一部分,其中搜索字符串也是操作字符串的一种基本操作。为了方便程序员使用,C语言提供了许多字符串处理函数,其中使用最多的几个函数之一就是“strstr”。
本文将会详细介绍“strstr”函数的使用方法,以及如何在C语言中正确地搜索字符串。
一、什么是“strstr”函数
“strstr”函数被定义在“string.h”头文件中,用于在目标字符串中搜索子字符串的出现位置。函数原型如下:
```
char *strstr(const char *str1, const char *str2);
```
其中,第一个参数“str1”是需要被搜索的目标字符串,第二个参数“str2”是需要被匹配的子字符串。
函数返回值是一个指向第一次出现“str2”子字符串的地址,如果没有找到子字符串,则返回空指针。
二、使用“strstr”函数搜索单个字符
在讲述如何使用“strstr”函数搜索字符串之前,我们先来看一下如何使用“strstr”函数搜索单个字符。
代码示例:
```
#include
#include
int main()
{
char str[] = "This is a test.";
char *p = NULL;
p = strstr(str, "a");
printf("The position of 'a' is: %d\n", p - str);
return 0;
}
```
运行结果:
```
The position of 'a' is: 8
```
在上面的例子中,我们定义了一个字符串“str”,并使用“strstr”函数搜索其中第一次出现的字符“a”的位置。
打印出来的结果是“8”,因为“a”字符在字符串中的位置是从0开始计算的,所以我们需要使用指针相减的方式获取字符“a”的位置。
三、使用“strstr”函数搜索子字符串
现在我们来看一下如何使用“strstr”函数搜索子字符串。
代码示例:
```
#include
#include
int main()
{
char str[] = "This is a test.";
char *p = NULL;
p = strstr(str, "test");
if (p != NULL) {
printf("The position of 'test' is: %d\n", p - str);
} else {
printf("Not found!\n");
}
return 0;
}
```
运行结果:
```
The position of 'test' is: 10
```
在上面的例子中,我们定义了一个字符串“str”,并使用“strstr”函数搜索其中第一次出现的子字符串“test”。
打印出来的结果是“10”,因为“test”子字符串的起始位置是从第10个字符开始。
从上面的例子中可以看出,“strstr”函数返回的是被匹配字符串的起始地址,我们可以通过指针相减的方式获取子字符串在目标字符串中的位置。
需要注意的是,如果子字符串不存在于目标字符串中,那么“strstr”函数会返回空指针。
四、使用“strstr”函数搜索多个子字符串
有些情况下,我们需要搜索多个子字符串是否在目标字符串中存在,这时候可以采用循环遍历的方式。
代码示例:
```
#include
#include
int main()
{
char str[] = "This is a test.";
char *str_array[] = {"hello", "world", "is", "a", "test", "apple", "banana"};
int i, j;
for (i = 0; i < sizeof(str_array)/sizeof(str_array[0]); i++) {
char *p = strstr(str, str_array[i]);
if (p != NULL) {
j = p - str;
printf("%s is in str, position is: %d\n", str_array[i], j);
} else {
printf("%s is not in str.\n", str_array[i]);
}
}
return 0;
}
```
运行结果:
```
hello is not in str.
world is not in str.
is is in str, position is: 2
a is in str, position is: 5
test is in str, position is: 10
apple is not in str.
banana is not in str.
```
在上面的例子中,我们定义了一个字符串“str”,以及一个子字符串数组“str_array”。
通过循环遍历数组中的每一个子字符串,再使用“strstr”函数来搜索目标字符串是否存在该子字符串。
如果存在,就打印出该子字符串在目标字符串中的位置;如果不存在,则打印出子字符串不存在的信息。
五、小结
使用“strstr”函数可以方便地在C语言中搜索字符串,可以搜索单个字符、子字符串、多个子字符串等场景。
需要注意的是,“strstr”函数只能搜索字符型数据,如果需要搜索其他类型的数据,需要转换成字符型数据后再进行搜索。
另外,由于“strstr”函数返回的是指向匹配字符串的指针,所以使用前需要对返回值进行类型转换,避免出现错误。
希望本文能够对大家掌握“strstr”函数的使用方法有所帮助。