我在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