指针实现ststr
时间: 2023-07-20 19:11:29 浏览: 144
实现strstr()函数1
可以通过指针实现ststr,具体实现代码如下:
```c
#include <stdio.h>
char *ststr(char *str, char *substr) {
if (*substr == '\0') {
return str;
}
char *p1 = str;
while (*p1 != '\0') {
char *p2 = substr;
char *p3 = p1;
while (*p2 != '\0' && *p3 == *p2) {
p3++;
p2++;
}
if (*p2 == '\0') {
return p1;
}
p1++;
}
return NULL;
}
int main() {
char str[] = "hello world";
char substr[] = "world";
char *result = ststr(str, substr);
if (result == NULL) {
printf("Substring not found\n");
} else {
printf("Substring found at index %ld\n", result - str);
}
return 0;
}
```
这个函数的实现与标准库函数`strstr()`类似,接受两个参数,分别是原字符串和要查找的子字符串。首先判断子字符串是否为空,如果为空则直接返回原字符串。然后使用两个指针`p1`和`p2`分别指向原字符串和子字符串的首字符,不断比较两个指针所指的字符是否相等。如果相等,则同时向后移动两个指针,继续比较。如果不相等,则将`p1`向后移动一位,重新开始比较。如果`p2`已经指向子字符串的结尾,则说明找到了子字符串,返回`p1`即可。如果`p1`已经指向原字符串的结尾,则说明没有找到子字符串,返回`NULL`即可。
阅读全文