if / else if / else菜单问题c

时间:2013-04-15 10:41:13

标签: c if-statement menu

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

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;
}

2 个答案:

答案 0 :(得分:6)

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

要返回实际的用户选择,请不要通过呼叫分配给它:

int menuChoice:

scanf("%i", &menuChoice);

return menuChoice;

答案 1 :(得分:6)

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

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