我的菜单有问题。我从用户那里得到一个号码,但每当我得到一个号码时,无论我做什么,它都只做一个选项。我做错了什么?
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;
}
答案 0 :(得分:6)
scanf
函数返回它所做的数字或成功转换,而不是实际的转换值。它似乎总能成功读取您的价值,因此会返回1
进行一次成功转换。
要返回实际的用户选择,请不要通过呼叫分配给它:
int menuChoice:
scanf("%i", &menuChoice);
return menuChoice;
答案 1 :(得分:6)
int menuChoice = scanf("%i", &menuChoice);
scanf
返回成功转换的次数,因此如果扫描成功,则用1覆盖转换后的值。