C语言函数strstr的内部实现
时间: 2023-11-26 22:06:02 浏览: 50
函数strstr的作用是在一个字符串中查找另一个字符串的第一次出现,并返回该位置的指针。其内部实现一般会采用循环遍历的方式,逐个比较子串和主串中的字符,直到找到匹配的位置或者主串遍历完毕。
以下是一个简化版的C语言函数strstr的实现:
```
char *strstr(const char *haystack, const char *needle) {
int i, j;
for (i = 0; haystack[i] != '\0'; i++) {
for (j = 0; needle[j] != '\0'; j++) {
if (haystack[i+j] != needle[j]) {
break;
}
}
if (needle[j] == '\0') {
return (char *) &haystack[i];
}
}
return NULL;
}
```
该实现中,外层循环遍历主串中的每个字符,内层循环则遍历子串中的每个字符,一旦发现不匹配的字符,则退出内层循环,继续外层循环。如果内层循环能够遍历完子串,并且都能够匹配主串中的相应字符,则说明找到了子串在主串中的位置,返回该位置的指针。如果外层循环遍历完整个主串,仍然没有找到子串,则返回NULL。
相关问题
C语言strstr的实现函数,简单点
C语言的strstr函数实现比较简单,可以按照以下方式实现:
```c
char *strstr(const char *haystack, const char *needle) {
if (*needle == '\0') {
return (char *) haystack;
}
char *p1 = (char *) haystack;
while (*p1 != '\0') {
char *p1_begin = p1, *p2 = (char *) needle;
while (*p1 != '\0' && *p2 != '\0' && *p1 == *p2) {
p1++;
p2++;
}
if (*p2 == '\0') {
return p1_begin;
}
p1 = p1_begin + 1;
}
return NULL;
}
```
该函数的作用是在字符串haystack中查找子串needle,并返回子串在原字符串中的位置。如果没有找到则返回NULL。
c语言中strstr函数
C语言中的strstr函数是一个字符串处理函数,其作用是在一个字符串中查找另一个字符串的位置。具体来说,它可以用来判断一个字符串是否包含另一个字符串,并返回第一次出现的位置。该函数的原型为char *strstr(const char *str1, const char *str2),其中str1为要查找的字符串,str2为要查找的子串。如果找到了子串,则返回子串在字符串中的首地址;否则返回NULL。该函数在头文件<string.h>中声明。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)