实现strstr
?
從字符串str1中查找是否有字符串str2,如果有,從str1中的str2位置起,返回str1的指針,如果沒有,返回null。
?
?
? ? ?圖解思路
判斷s1,s2是否相等,若相等,則s1,s2同時向后移一位;若不相等,cur后移一位,s1=cur。循環判斷。
?
代碼實現
#include<stdio.h> #include<assert.h>char* my_strstr(const char*str, const char*substr) {assert(str != NULL);assert(substr != NULL);const char *s1;const char *s2;const char *cur = str;if (*substr == '\0') {return (char *)str;}while (*cur){s1 = cur;s2 = substr;while (*s1 && *s2 && *s1 == *s2){s1++;s2++;}if (*s2 == '\0'){return (char *)cur;}cur++;}return NULL; }int main() {const char *p = "abcdefghij";const char *q = "cdef";char *ret = my_strstr(p, q);if (ret == NULL){printf("不存在\n");}else{printf("%s\n", ret);}return 0; }?
?
?
總結