저는 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
을 인쇄하려고 시도합니다.
을 반환하면 char
포인터 변수에이 반환 값을 저장해야합니다. 맞습니까?
이 문제는 모든 입력 또는 테스트 문자열에 표시되지 않는 문자에서만 발생합니까? – usr2564301
모든 입력이있는 @Rad Lexus ... 아직 무슨 일이 일어나고 있는지 파악하려고 시도 중입니다 ... – ulissesBR
입력 사항을 표시하십시오. 또한 'strchr'은 '\ 0'을 검색 할 수 있습니다. – BLUEPIXY