3

これには複数の方法があることは知っていますが、ユーザーに文字を入力させ、後で使用するためにその文字を特定の整数に変換させようとしています。後で何かを変更する必要がある場合に備えて、定数を使用し#defineて物事を単純化しています。userChoiceに対して取得している値は、0、1、または2ではなく、大きな数値であるため、何かが間違っています。

これらは、コードの関連部分です。

    #define ROCK 0
    #define PAPER 1
    #define SCISSORS 2
    void getData (int* userChoice)
{
    char charvalue;
    printf("\n\nEnter the R, P, S, or Q (for quit) ");
    scanf("%c", &charvalue);
    charvalue = toupper(charvalue);
    if (charvalue == 'R')
        *userChoice = ROCK;
    else if (charvalue == 'P')
        *userChoice = PAPER;
    else if (charvalue == 'S')
        *userChoice = SCISSORS;
    else if (charvalue == 'Q')
        exit (1);
    else
        printf("\nerror");
    printf("%d", userChoice);

    return;

}
4

2 に答える 2

3

値ではなく、整数のアドレスを出力します。値を出力するには、を使用します*userChoice

printf("%d", *userChoice);
于 2013-03-08T19:14:25.430 に答える
1

入力は int へのポインターであるため、ポインター *userChoice の値を出力する必要があります。

参照を渡して参照を変更するのではなく、関数が unsigned int として選択肢を返すようにすることをお勧めします。つまり、次のようなインターフェイスを使用することをお勧めします。

unsigned int getUserChoice(){ ... など

于 2013-03-08T19:21:11.303 に答える