2를 입력할 때 Enter를 치면 이 Enter 값도 Key 버퍼에 남아있어서
나중에 scanf 할 때 Enter 값을 읽기 때문입니다.
해결 방법은 key 버퍼를 초기화 해주면 됩니다.
scanf 함수를 호출하기 전에 항상 fflush(stdin); 함수를 호출하여
입력 버퍼를 초기화 하세요.
징뉴 님이 쓰신 글 :
: 근데 여기 이런 질문 올려도 되는건가요?^^
: 오랜만에 c 하려하니 잘 안되네요...ㅠ
:
: c언어 y/n 입력해서 y입력받으면 계속 반복하고 n입력받으면 반복문 빠져나가 프로그램 종료되는 거 도와주세요.
:
: 정수를 입력받아서 홀수인지 짝수인지 구분하고
: “계속하시겠습니까? y/n : ”출력해서 y또는 n을 입력받아
: y를 받으면 계속 정수입력받는거 나오고 홀/짝 구분해주고
: n을 입력받으면 종료될 수 있게 만드는 프로그램인데요~
:
: 정수 입력받아서 홀/짝 구분하는 부분은 쉽게 구현했는데
: y/n 입력받아서 제어하는 부분이 잘 안되네요...b
:
: =============================================
:
: #include <stdio.h>
:
: main(){
:
: int num;
: char ch;
:
: for(;;){
:
: printf("정수를 입력하세요 :");
: scanf("%d", &num);
:
: if(num%2==0){
: printf("짝수입니다.");
: }else{
: printf("홀수입니다.");
: }
:
: printf("\n계속 하시겠습니까?(y/n) :");
: scanf("%c", &ch);
:
: if(ch == 'y'){ }
: else if(ch == 'n'){
: break;
: }
:
: }
:
: }
:
: =========================
: 이렇게 하면
:
: 정수를 입력하세요 : 2
: 짝수입니다.
: 계속 하시겠습니까?(y/n) : 짝수입니다.
:
: 이렇게 나와요... 왜이렇죠?ㅠㅠ
|