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'을 눌러 더 많은 금액을 추가하십시오 : "
게시 한 코드는 언급 한 내용을 인쇄하지 않습니다 (예 : 'C'를 입력하여 변경 사항 적용). 오류가 게시하지 않은 코드 부분에있을 가능성이 큽니다. – nos
응답 해 주셔서 감사합니다. 게시 도중 내 코드를 업데이트하는 실수였습니다. C, N 및 A에서 1, 2, 3으로 변경했습니다. 정수 처리가 더 쉽다고 생각했기 때문입니다. 내가 현재 내 컴퓨터에서 실행되는대로 모든 게시물이 업데이트되었습니다. – Vorkos
이전 unposted 코드는'stdin'에''\ n ''을 남긴 입력 함수를 사용했습니다. – chux