strstr函数
时间: 2023-06-28 20:14:09 浏览: 78
strstr函数是C语言中的一个字符串处理函数,用于查找一个字符串中是否包含指定的子串,并返回该子串在原字符串中的位置。函数原型如下:
```
char *strstr(const char *str1, const char *str2);
```
其中,`str1`为要查找的字符串,`str2`为要查找的子串。函数返回值为指向第一次出现`str2`的指针,如果未找到则返回`NULL`。
例如:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "hello world";
char *ptr = strstr(str, "world");
if (ptr != NULL) {
printf("found at position %ld\n", ptr - str);
} else {
printf("not found\n");
}
return 0;
}
```
输出:
```
found at position 6
```
表示在字符串`"hello world"`中找到了子串`"world"`,并且它在字符串中的起始位置为6。
相关问题
C语言函数strstr函数
`strstr`是C语言标准库函数之一,它定义在头文件`string.h`中。这个函数用于在一个字符串(也称为"haystack")中查找另一个字符串("needle")首次出现的位置。如果找到了匹配的子串,它会返回指向该子串首字符的指针;如果没有找到,就返回`NULL`。
函数原型通常像这样:
```c
char *strstr(const char *haystack, const char *needle);
```
这里的`haystack`是要搜索的主字符串,`needle`是需要查找的子字符串。例如:
```c
char str[] = "Hello, world!";
char* found = strstr(str, "world");
if (found) {
printf("Substring found at position %ld\n", (long)(found - str));
} else {
printf("Substring not found.\n");
}
```
这将输出:`Substring found at position 7`,因为"world"是在`str`数组从位置7开始的部分找到的。
编写strstr函数
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。
阅读全文