-4

我的菜单有问题。我从用户那里得到一个号码,但是每当我得到一个号码时,无论我做什么,它都会执行选项一。我究竟做错了什么?

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

scanf函数返回它进行的数字或成功转换,而不是实际转换的值。似乎它总是成功地读取您的价值,因此将返回1一次成功的转换。

要返回实际的用户选择,请不要从调用中分配给它:

int menuChoice:

scanf("%i", &menuChoice);

return menuChoice;
于 2013-04-15T10:46:17.830 回答
6
int menuChoice = scanf("%i", &menuChoice);

scanf返回成功转换的次数,因此如果扫描成功,您将用 1 覆盖转换后的值。

于 2013-04-15T10:46:34.927 回答