2013-04-15 125 views
-4

我的菜單有問題。我從用戶那裏得到一個號碼,但是每當我得到一個號碼時,無論我做什麼,它都會執行選項一。我究竟做錯了什麼?if/else if/else menu issue c

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

沒有看到'menu()'我們怎麼知道你做錯了什麼? – StoryTeller

+0

'menu()'的代碼是什麼?這可能是問題所在。 –

+0

因爲'menu'只返回'1'?請向我們展示菜單功能,否則這將無法回答。 –

回答

6

scanf函數返回的數量,或者它由轉換成功,而不是實際轉換值。它看起來總是成功讀取你的價值,所以將返回1一次成功的轉換。

返回實際的用戶選擇,不從呼叫分配給它:

int menuChoice: 

scanf("%i", &menuChoice); 

return menuChoice; 
+0

好的。我如何改變這個返回他們想要的實際選擇 – kevorski

+1

@kevorski use'int menuChoice; scanf(「%i」,&menuChoice);'而不是'int menuChoice = scanf(「%i」,&menuChoice);' – MOHAMED

+0

太棒了,感謝您的幫助。 @MOHAMED – kevorski

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

scanf成功返回轉換次數,所以如果掃描成功,要覆蓋轉換值與1.