-4

メニューに問題があります。ユーザーから番号を取得しますが、番号を取得するたびに、何をしてもオプション1が実行されます。私は何を間違っていますか?

int main()
{   
int array[SIZE];
int size = readNum();
fillArray(array, size);
char option = 'y';
do
{
    int num = menu();
    if(num == 1)
        fillArray(array, size);
    else if(num == 2)
    {
        int newSize = readNum();
        fillArray(array, newSize);
    }
    else
    {
        sortArray(array);
    }
}while(option == 'y');


return 0;
}//end main


int menu()
{
printf("1)Change the values of the array\n2)Change the size of the array and the values in the array\n3)Find and display the mean and median\nChoice: ");
int menuChoice = scanf("%i", &menuChoice);
return menuChoice;
}
4

2 に答える 2

6
int menuChoice = scanf("%i", &menuChoice);

scanf成功した変換の数を返すため、スキャンが成功した場合は、変換された値を 1 で上書きしています。

于 2013-04-15T10:46:34.927 に答える
6

このscanf関数は、実際に変換された値ではなく、数値または成功した変換を返します。常に値の読み取りに成功しているように見えるため、1変換が 1 回成功すると返されます。

実際のユーザーの選択を返すには、呼び出しから割り当てないでください。

int menuChoice:

scanf("%i", &menuChoice);

return menuChoice;
于 2013-04-15T10:46:17.830 に答える