2013-04-15 3 views
-4

내 메뉴에 문제가 있습니다. 나는 사용자로부터 숫자를 얻는다.하지만 내가 숫자를 얻을 때마다 나는 내가하는 일에 상관없이 옵션 1을한다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?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' 만 리턴하기 때문에? 우리에게'menu' 함수도 보여 주시거나, 대답이 불가능합니다. –

답변

6

scanf 함수는 실제 변환 된 값이 아니라 변환 된 숫자 또는 성공적인 변환을 반환합니다. 항상 가치를 읽는 데 성공한 것으로 보이므로 성공적인 전환 1 회에 대해 1을 반환합니다.

통화에서 할당하지 않는, 실제 사용자의 선택을 반환하려면 :

int menuChoice: 

scanf("%i", &menuChoice); 

return menuChoice; 
+0

확인. 어떻게 그들이 원하는 실제 선택을 반환 변경합니까 – kevorski

+1

@kevorski 사용'int menuChoice; int menuChoice = scanf ("% i", & menuChoice); ' – MOHAMED

+0

도움에 감사를 전하며, scanf ("% i", & menuChoice); @MOHAMED – kevorski

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

scanf이 성공의 전환 수를 반환, 검사가 성공하면, 당신은 변환 된 값을 덮어 쓰지 않도록