strstr函数源码
时间: 2023-12-08 20:37:12 浏览: 31
strstr函数是C语言中的一个字符串查找函数,用于在一个字符串中查找另一个字符串的出现位置。以下是一个简单的strstr函数的源码实现:
```c
char *strstr(const char *haystack, const char *needle) {
size_t needle_len = strlen(needle);
if (!needle_len) {
return (char *) haystack;
}
char *p = (char *) haystack;
while ((p = strchr(p, *needle)) != NULL) {
if (strncmp(p, needle, needle_len) == 0) {
return p;
}
p++;
}
return NULL;
}
```
该函数的参数为两个字符串,第一个参数为要查找的字符串,第二个参数为要查找的子字符串。函数返回值为指向第一个匹配子字符串的指针,如果没有找到则返回NULL。
函数实现的思路是先获取子字符串的长度,然后在主字符串中查找子字符串的第一个字符,如果找到了则使用strncmp函数比较子字符串和主字符串中的一段字符是否相等,如果相等则返回该位置的指针,否则继续查找下一个字符。
相关问题
strstr函数源代码
以下是C语言的strstr函数源代码:
```
#include <stdio.h>
#include <string.h>
char *strstr(const char *haystack, const char *needle) {
size_t needle_len;
if (*needle == '\0')
return (char *) haystack;
needle_len = strlen(needle);
while (*haystack != '\0') {
if (*haystack == *needle) {
if (strncmp(haystack, needle, needle_len) == 0)
return (char *) haystack;
}
haystack++;
}
return NULL;
}
```
该函数的作用是在一个字符串中查找另一个字符串,如果找到则返回第一个字符串中第一个匹配到的子串的地址。如果没有找到,则返回NULL。
C语言strstr函数源代码
这是C语言中strstr函数的源代码:
```C
char *strstr(const char *haystack, const char *needle) {
char *p1 = (char *) haystack, *p2 = (char *) needle;
char *p1Adv = (char *) haystack;
if (*needle == '\0') {
return (char *) haystack;
}
for (; *p1Adv; p1 = p1Adv++) {
p2 = (char *) needle;
if (*p1 != *p2) {
continue;
}
while (*++p1 && *++p2) {
if (*p1 != *p2) {
break;
}
}
if (*p2 == '\0') {
return p1;
}
}
return NULL;
}
```
希望可以帮到您。