-1

ユーザーが「h」を入力して別の関数を実行できるかどうかを確認しようとしていますが、何らかの理由でプログラムを実行すると、セグメンテーション違反が表示されます。どんな助けでも大歓迎です。

char checkh[] = "h";
char *checkInput;
printf("Enter input:");
scanf("%s", checkInput);

    if(strcmp(checkInput, checkh) == 0){
            helpMsg();
    }
4

2 に答える 2

2

次の方法で簡単に実行できます。

char choice;
scanf("%c",&choice);
if(choice=='h' || choice=='H')
{
    help();
}
于 2013-10-26T05:50:43.943 に答える
1

これは、コメントがすべて話していることだと思います。そのまま使用する前に、メモリを割り当てるchar *var必要があります。

既存のコードに、示された行を追加すると、seg fault が発生しなくなります。

char checkh[] = "h";
char *checkInput;  
checkInput = malloc(10);//add this line;
printf("Enter input:");
scanf("%s", checkInput);

    if(strcmp(checkInput, checkh) == 0){
            helpMsg();
    }  
//some code  
free(checkInput);//add this line
于 2013-10-26T05:51:38.087 に答える