strstr函数如何实现子串查找

avatar
作者
猴君
阅读量:8

在C语言中,可以通过循环遍历主串中每个字符,并使用strncmp函数来比较子串和主串中的每个可能的子串,如果相等则返回该子串在主串中的位置。具体实现可以参考以下代码:

#include <stdio.h> #include <string.h>  char* strstr_custom(const char* haystack, const char* needle) {     if (*needle == '\0') {         return haystack; // 如果子串为空,则直接返回主串     }      while (*haystack != '\0') {         if (*haystack == *needle && strncmp(haystack, needle, strlen(needle)) == 0) {             return (char*) haystack; // 如果找到子串,则返回该子串在主串中的位置         }         haystack++;     }      return NULL; // 如果找不到子串,则返回NULL }  int main() {     const char* haystack = "hello world";     const char* needle = "world";      char* result = strstr_custom(haystack, needle);      if (result != NULL) {         printf("子串 \"%s\" 在主串 \"%s\" 中的位置为 %ld\n", needle, haystack, result - haystack);     } else {         printf("子串 \"%s\" 未在主串 \"%s\" 中找到\n", needle, haystack);     }      return 0; } 

以上代码中定义了一个自定义的strstr函数strstr_custom来实现子串查找功能。在main函数中调用strstr_custom函数来查找子串在主串中的位置,并输出结果。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!