求子串函数strstr()的函数
在C语言中,字符串是用字符数组来表示的,而函数strstr()则是用来查一个字符串中是否具有另一个字符串的函数,其全称为“string search”,也就是字符串查。
本文将从以下几个方面来介绍函数strstr()的相关知识。
一、函数原型
函数strstr()的原型如下:
```c
char *strstr(const char *str1, const char *str2);
```
其中,str1为被查的字符串,str2为要查的字符串,返回值为在str1中第一次出现str2的位置指针,如果不到则返回NULL。
二、函数功能
函数strstr()的功能是查字符串中是否包含另一个字符串,如果包含则返回第一次出现位置的指针,不包含则返回NULL。具体用法如下:
```c
char str1[] = "hello world";
char str2[] = "world";
char *p;
p = strstr(str1, str2);
if(p)
printf("在%s中,第一次出现%s的位置为%d\n", str1, str2, p-str1+1);
else
printf("在%s中,没有到%s\n", str1, str2);
```
输出结果为:
```c
在hello world中,第一次出现world的位置为7
```
三、函数实现原理
函数strstr()的实现原理是在字符串str1中循环查字符串str2,直到到第一次出现的位置或遍历完整个字符串。
具体实现方式为,先到字符串str2的第一个字符,然后从该字符开始依次比较str1和str2中的字符,如果相等则一直比较下去,一旦不相等则退出比较,继续在字符串str1中查下
一个与str2中第一个字符相同的字符,再进行上述比较操作,直到到第一次出现的位置或遍历完整个字符串。
四、函数使用注意事项
1. 函数strstr()区分大小写,即strcmp()与strcasecmp()的区别。
2. 函数strstr()在到第一次出现的位置之后并不会终止查,而是会继续查后面是否还有同一字符串,因此需要使用break等方法来终止查。
3. 函数strstr()的返回值是一个指针类型,需要进行类型转换才能进行比较。
4. 函数strstr()只能查单个字符的子串,无法查多个字符的子串。
五、函数应用举例
可以通过书写一个函数,实现在一个字符串中查指定子串,返回该子串在字符串中的位置。函数实现如下:
```c
#include <stdio.h>
#include <string.h>
int find_substr(char *str, char *substr) {
strcmp可以比较单个字符吗 char *p;
p = strstr(str, substr);
if (p == NULL) {
return -1;
} else {
return p-str;
}
}
int main() {
char str[] = "hello world";
char substr[] = "world";
int pos = find_substr(str, substr);
printf("在%s中,第一次出现%s的位置为%d\n", str, substr, pos);
return 0;
}
```
输出结果为:
```c
在hello world中,第一次出现world的位置为6
```
以上就是关于求子串函数strstr()的函数的全部内容,希望本文能对您的学习和工作有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论