编写strstr函数
时间: 2023-11-28 16:45:07 浏览: 35
strstr函数是C语言中的一个字符串处理函数,用于在一个字符串中查找另一个字符串的出现位置。其函数原型为:
```c
char *strstr(const char *str1, const char *str2);
```
其中,str1为要查找的字符串,str2为要查找的子字符串。函数返回值为指向第一次出现子字符串的指针,如果没有找到则返回NULL。
下面是一个简单的实现示例:
```c
char *my_strstr(const char *str1, const char *str2) {
if (*str2 == '\0') {
return (char *) str1;
}
char *p1 = (char *) str1;
while (*p1 != '\0') {
char *p1_begin = p1, *p2 = (char *) str2;
while (*p1 != '\0' && *p2 != '\0' && *p1 == *p2) {
p1++;
p2++;
}
if (*p2 == '\0') {
return p1_begin;
}
p1 = p1_begin + 1;
}
return NULL;
}
```
该实现首先判断要查找的子字符串是否为空,如果为空则直接返回原字符串的指针。然后使用两个指针分别指向原字符串和子字符串,逐个比较字符是否相等,如果相等则继续比较下一个字符,直到子字符串遍历完毕。如果子字符串遍历完毕,则说明已经找到了第一次出现子字符串的位置,返回该位置的指针。如果原字符串遍历完毕仍未找到子字符串,则返回NULL。