본문 바로가기

Programming (IT)

입력 기본 패턴

반응형

void input1(){
char str[256];
gets(str);
}

void input2(){
char str[256];
scanf("%254s", str);
}

위와 같이 2가지 패턴을 사용하여 입력 받을 수 있다.

단 scanf 의 경우 중간에 space ' ' 가 생기면 글자 뒤가 저장되지 않는 문제가 있다.

입력 처리 시 엔터 문제가 발생한다.

엔터 문제는 123 입력 후 엔터를 치면
123은 str에 저장이 되나 엔터 값은 buffer에 남게된다.

그래서 이 후에 다시 scanf가 호출되면 입력 값이 들어가는 것이 아니라
buffer에 남아있던 엔터 값이 들어간다.

간단한 해결 방안으로 fflush(stdin)을 사용한다.

수정 코드는 다음과 같다.

void input2(){
char str[256];
fflush(stdin)
scanf("%254s", str);
}

여기서 stdin 은 표준 입력을 나타내고 fflush 함수는 buffer에 남아있는 데이타 값을 버리는 역할을 한다.