阅读量: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函数来查找子串在主串中的位置,并输出结果。