程序代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
char* Strstr(const char*str1, const char*str2) {
assert(str1 != NULL);
assert(str2 != NULL);
if (*str2 == NULL) {
return 0;
}
//黑指针功能世纪路从哪个位置找字符串子串
char* black_ptr = str1;
while (*black_ptr != '\0') {
//红指针帮我们完成具体的子串比较
char*red_ptr = black_ptr;
char*sub_ptr = str2;
while (*red_ptr != '\0' && *black_ptr != '\0'
&& *red_ptr == *sub_ptr) {
++sub_ptr;
++red_ptr;
}
if (*sub_ptr == '\0') {
//找到了
return black_ptr;
}
++black_ptr;
}
return NULL;
}
int main() {
char str1[] = "abcdef";
char str2[] = "bcd";
//ret指向了str1中第一处str2字串的位置
//如果没找到,返回一个空指针
char *ret = Strstr(str1, str2);
printf("%p\n", str1);//str1第一个字符的位置
printf("%p\n", ret);如果找到了,表示str2中的第一个字符在str1中的位置,没找到就返回空指针
system("pause");
return 0;
}