我在C中潛入指針和字符串,我仍然習慣於一些概念。我試圖實現strchr()
函數的一個版本 - 與string.h中的一樣 - 用於學習目的,但基本的東西仍然是不正確的。任何人都可以幫助我理解這個strchr()C分段錯誤?
這裏是我的代碼:
#include <stdio.h>
char* my_strchr(const char* str, int c){
if (str == NULL){
printf("STR is NULL. Finishing the program\n");
return NULL;
}
while (*str != '\0'){
if (*str == c){
return (char*) str;
}
str++;
}
return NULL;
}
int main(){
char *a = "Hello World!";
char *b;
char c;
printf("Type the character you want to find in the Hello World! string:\n");
scanf(" %c", &c);
b = my_strchr(a, c);
printf("Character found! %c\n", *b);
return 0;
}
我想這是爲什麼返回一個分割錯誤弄清楚。當我使用gbd時,它告訴我錯誤是在最後printf
,它試圖打印*b
。
一旦my_strchr()
返回一個(char*) str
,我不得不將這個返回值存儲在一個char
指針變量,對吧?
這是發生在所有的輸入,還是隻有字符不出現在你的測試字符串? – usr2564301
@雷克薩斯與所有輸入...仍試圖找出發生了什麼... – ulissesBR
顯示您的輸入。 'strchr'也可以搜索''\ 0''。 – BLUEPIXY