2016-10-03 1 views
1
char theInput[10]; 
long option; 
int innerLoop = 1; 
char *dunno; 
while(innerLoop == 1){ 
    printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: "); 
    fgets(theInput, sizeof theInput, stdin); 
    option = strtol(theInput, &dunno, 10); 
    if(option == 1){ 
    loop = 0; 
    innerLoop = 0; 
    }else if(option == 2){ 
    loop = 1; 
    outerLoop = 1; 
    innerLoop = 0; 
    firstLoop = 0; 
    }else if(option == 3){ 
    loop = 1; 
    innerLoop = 0; 
    outerLoop = 1; 
    firstLoop = 1; 
    }else{ 
    printf("\nInvalid input, please try again.\n"); 
    innerLoop = 1; 
    } 
} 

이 코드의 결과는 처음 실행했을 때 "Type '1'을 출력하여"part "다음에 줄 바꿈 뒤에 "잘못된 입력이 있습니다. 다시 시도하십시오." 명령 행에서 어떤 입력도받지 않고. 그런 다음 첫 번째 printf 문을 다시 인쇄 한 다음 입력을 허용하고 작동합니다. 첫 번째 명령문을 인쇄 한 다음 입력을 기다리는 것을 의미합니다.while 루프에서 fgets()는 줄 바꿈을 입력으로 사용하여 실행합니다.

다음은 터미널 출력입니다.

"유형 '1', 변경 사항을 얻기 위해 '2'더 자금을 추가 할 수있는 다른 항목 또는 '3'선택 :. 잘못된 입력을 다시 시도하십시오

유형을 '1'을 얻을 수 있도록 변경, '2'를 눌러 다른 항목을 선택하거나 '3'을 눌러 더 많은 금액을 추가하십시오 : "

+3

게시 한 코드는 언급 한 내용을 인쇄하지 않습니다 (예 : 'C'를 입력하여 변경 사항 적용). 오류가 게시하지 않은 코드 부분에있을 가능성이 큽니다. – nos

+0

응답 해 주셔서 감사합니다. 게시 도중 내 코드를 업데이트하는 실수였습니다. C, N 및 A에서 1, 2, 3으로 변경했습니다. 정수 처리가 더 쉽다고 생각했기 때문입니다. 내가 현재 내 컴퓨터에서 실행되는대로 모든 게시물이 업데이트되었습니다. – Vorkos

+2

이전 unposted 코드는'stdin'에''\ n ''을 남긴 입력 함수를 사용했습니다. – chux

답변

0

표준 출력을 플러시 할 수 있습니까? 소스 코드를 적응하기 전에

#include <stdio.h> 

int main() { 
    int loop = 0; 
    int outerLoop = 0; 
    int firstLoop = 0; 

    char theInput[10]; 
    long option; 
    int innerLoop = 1; 
    char *dunno; 
    while(innerLoop == 1){ 
    printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: "); 
    fflush(stdout); 
    fgets(theInput, sizeof theInput, stdin); 
    option = strtol(theInput, &dunno, 10); 
    if(option == 1) { 
     loop = 0; 
     innerLoop = 0; 
    }else if(option == 2){ 
     loop = 1; 
     outerLoop = 1; 
     innerLoop = 0; 
     firstLoop = 0; 
    }else if(option == 3){ 
     loop = 1; 
     innerLoop = 0; 
     outerLoop = 1; 
     firstLoop = 1; 
    }else{ 
     printf("\nInvalid input, please try again.\n"); 
     innerLoop = 1; 
    } 
    } 
} 

당신이 isoltion에서이 예제를 실행 시도 할 수 있습니다 그리고 당신은이 있는지, : 다른 사람이 작업 예제를하고 싶은 경우

나는 주요 방법을 추가했습니다 ' 예상 된 결과?

관련 문제