if/else if/else菜单问题c

if/else if/else菜单问题c,c,if-statement,menu,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 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;
}

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

要返回实际用户选择,请不要从调用中为其分配:

int menuChoice:

scanf("%i", &menuChoice);

return menuChoice;

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

没有看到
menu()
我们如何知道您做错了什么?
menu()
的代码是什么?这可能就是问题所在。因为
菜单
只返回
1
?请同时向我们显示
菜单
功能,否则这将无法回答。此外,
选项
永远不会更改。你手上有一个无限循环。对不起,忘记添加了。好的。我如何更改它以返回他们所做的实际选择want@kevorski使用
int菜单;scanf(“%i”和menuChoice)而不是
int menuChoice=scanf(“%i”&menuChoice)
@kevorski不返回
scanf
返回的值。只是出于好奇,int length=sizeof(array)/sizeof(array[0]);将给出我使用的数组的整个长度…至少这是我在research@kevorski是的,在
main
中,您可以使用它来获取
数组的大小。
int menuChoice = scanf("%i", &menuChoice);