私は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*) str
を返すと、char
ポインタ変数にこの戻り値を格納する必要があります。
これはすべての入力、またはテスト文字列に表示されない文字のみで起こりますか? – usr2564301
@Rad Lexus with all input ...まだ何が起こっているのか把握しようとしています... – ulissesBR
あなたの入力を表示してください。また 'strchr'は' '\ 0''を検索できます。 – BLUEPIXY