在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函數來查找子串在主串中的位置,并輸出結果。