2014-03-02 4 views
-3

도시 간의 소요 시간을 계산하는 C로 콘솔 앱을 만들려고합니다. 문제는 내 scanSlut 메서드가 1을 계속 반환한다는 것입니다. ("slut"은 영어로 끝나고, 저는 덴마크어이므로 변수 이름에 덴마크 이름을 지정합니다.)이 또한 라이브러리의 다른 변수를 호출하지 못하게합니다. 영어.)<SOLVED> scanf ("% d", & <variable>); 1을 반환합니다

printf("Indtast destinationsstationsnummer:\n"); 
    slut = scanSlut(start); 
    if(slut > 15 || slut < 1) { 
     do { 
      printf("Du har indtastet en ugyldig ankomststation. Indtast venligst en gyldig station\n"); 
      slut = scanSlut(start); 
     } while (slut > 15 ||slut < 1); 
    } 

int scanSlut(int start) { 
    int slut, i; 
    for(i=1; stationer[i] != '\0'; i++) { 
     if(i!= start) { 
      printf("#%d: %s\n",i,stationer[i]); 
     } 
    } 
    printf("slut = %d\n", slut); 
    slut = scanf("%d", &slut); 
    printf("slut = %d\n", slut); 
    return slut; 
} 

첫 번째 printf("slut = %d\n", slut); 반환 난수 (이 설정 될 때까지 변수가) 쓰레기를 포함,하지만 두 번째 printf 내가 어떤 임의의 숫자를 눌러도, 1를 작성 유지하기 때문에 논리적이다.

int scanStart() { 
int start, i; 
for(i=1; stationer[i] != '\0'; i++) { 
    printf("#%d: %s\n",i,stationer[i]); 
} 
scanf("%d",&start); 
return start; 
} 

내가 빌드, 다시, 다시 시작 IDE를 시도, 여전히 내가 할 모든 1. 어떤 아이디어입니다 : 는 내가 너무 그것을 원하는 것을하는, 너무 scanStart() 방법을 가지고있다?

답변

8

문제는이 라인에 있습니다

slut = scanf("%d", &slut); 

scanf는 할당 된 입력 항목의 수를 반환합니다. 로 변경 :

scanf("%d", &slut); 

(scanf에 대한 자세한 내용은 man scanf 참조).

+2

또는 scanf의 반환 값을 별도의 변수에 저장하고 scanf가 실제로 성공했는지 확인하십시오. –

관련 문제