2

プログラムを実行して「はい」と答えると、間違っていることがわかります。この種のプログラムを実行する方法を知っている人はいますか?

#include <string.h>
#include <stdio.h>
int strcmp(const char *str1,const char *str2 );

// I am trying to make a program that asks the user to input an answer 
int main() 
{
    char answer[20];


    printf("Can birds fly?\n");   
    scanf("%s", &answer[20]);    


    if(strcmp(answer, "yes") == 0)  
    {
        printf("You are right"); 
    }else
    {
        printf("You are worng"); 
    }

    return 0; 
}
4

1 に答える 1

5

この行を変更します。

scanf("%s", &answer[20]); 

に:

scanf("%s", answer);

scanf文字列を配置するアドレスに渡す必要があります。文字列answer[20]の21番目の文字の値を選択し(文字列は20文字しかないため未定義)、それへのポインターを取得します(ガベージ、アクセス違反を取得します)。

于 2012-11-30T19:13:49.807 に答える