我正在深入研究 C 中的指针和字符串,但我仍然习惯了一些概念。我尝试实现该strchr()
函数的一个版本——与 string.h 中的相同——用于学习目的,但一些基本的东西仍然不正确。
这是我的代码:
#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()
返回 a (char*) str
,我必须将此返回值存储在char
指针变量中,对吗?