C语言strstr的实现函数,简单点
时间: 2023-07-13 22:06:38 浏览: 63
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函数的函数体实现:
```c
char *strstr(const char *str1, const char *str2) {
const char *p1 = str1;
const char *p2 = str2;
const char *p1Adv = str1;
if (*str2 == '\0') {
return (char *)str1;
}
while (*p1Adv != '\0') {
p1 = p1Adv;
p2 = str2;
while (*p1 != '\0' && *p2 != '\0' && *p1 == *p2) {
p1++;
p2++;
}
if (*p2 == '\0') {
return (char *)p1Adv;
}
p1Adv++;
}
return NULL;
}
```
该函数的作用是在字符串str1中查找字符串str2的第一次出现,并返回指向该位置的指针。如果未找到,则返回NULL。
面试题写一下C语言strstr的实现函数
`strstr` 函数是 C 语言标准库中的一个字符串函数,用于在一个字符串中查找另一个字符串的首次出现。下面是一个简单的 `strstr` 实现函数。
```c
char *strstr(const char *str1, const char *str2)
{
const char *p1 = str1;
const char *p2 = str2;
const char *p1_adv = str1;
while (*++p2) {
p1_adv++;
}
while (*p1_adv) {
char *p1_begin = (char *)p1;
char *p2_begin = (char *)p2;
while (*p1 == *p2 && *p2) {
p1++;
p2++;
}
if (!*p2) {
return p1_begin;
}
p1 = p1_begin + 1;
p2 = p2_begin;
p1_adv++;
}
return NULL;
}
```
该实现函数使用了两个指针 `p1` 和 `p2`,分别指向待查找的字符串和查找目标字符串。同时,为了方便后续的查找操作,引入了一个指针 `p1_adv`,该指针在第一个循环中被初始化为字符串 `str1` 的末尾位置,即最后一个字符的下一个位置。
接下来,使用两个嵌套的循环进行查找操作。外层循环遍历整个字符串 `str1`,内层循环用于匹配字符串 `str2` 和 `p1` 指向的字符是否相等。若在匹配过程中发现不匹配的字符,则退出当前内层循环,并将 `p1` 和 `p2` 分别指向下一个位置和字符串 `str2` 的起始位置。若匹配成功,则返回 `p1` 指向的字符位置。
如果整个循环结束后还没有找到匹配的字符串,则返回 `NULL`。
阅读全文