C语言strstr的实现函数,简单点
时间: 2023-07-13 14:06:38 浏览: 38
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函数
C语言中的strstr函数用于在一个字符串中查找另一个字符串的出现位置,其函数声明为:`char *strstr(const char *str1, const char *str2)`。其中,str1是要被查找的字符串,str2是要查找的字符串。如果str2是str1的一部分,则返回指向str1中第一次出现的str2的指针;否则返回空指针。
以下是一个使用strstr函数的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "This is a simple string";
char* pch;
pch = strstr(str, "simple");
if (pch != NULL) {
strncpy(pch, "sample", 6);
}
puts(str);
return 0;
}
```
上述代码中,我们首先定义了一个字符串str,然后使用strstr函数查找字符串"simple"在str中的位置,并将其赋值给指针pch。如果pch不为空指针,则使用strncpy函数将pch指向的位置替换为"sample",并输出修改后的字符串。