char를 입력받을 때 흔히 쓸 수 있는 것이 getchar() 이다..

하지만 getchar()는 쓸 때 한가지 명심할 것이 있다...

getchar() 함수를 써서 값을 입력받은 후, 엔터를 치면 함수가 진행된다...

그 때 개행 문자 하나도 같이 버퍼에 쌓이게 된다...

그 후 getchar()가 실행되어서 버퍼에서 입력된 값을 받은 후..

또 다시 1번 더 getchar()를 실행해 버린다...

예를 들면.. 지금 입력된 값이 y 인지 n 인지 판단하는데..

y 값이면 y, 나머지는 n로 인식된다고 생각해보자...

y 후에 엔터를 쳤더니,

한번은 y로 인식했는데 자동으로 다음에는 n 를 한번 더 인식한다.

( 반복문일 경우임 )

이유는 처음에는 y를 입력받은 걸로 처리하고, 또 버퍼에 값이 있어서 값을 보

니.. \n 인 것이다. 그래서 y가 아니기 때문에.. n로 인식하는 것이다..

이럴때는 getchar()를 2번 연속으로 적으면 된다..

int a = getchar() ; getchar() ;

이렇게 되면 자동으로 a에는 첫 입력값, 그 후에는 그냥 버퍼에 값을 한번 더 부

를 뿐이다....

하지만 문제가 하나있다..

그냥 값 입력없이 엔터를 쳤을 때다... 그렇게 되면 처음 getchar()에서 개행 문

자로 인식 되지만, 뒤의 getchar()에서 문제를 일으킨다..

그래서 이 것을 모두 해결한 코드는..

if( a == '\n') continue;
else getchar() ;

이렇게 쓰면 된다..

'프로그래밍 > C,C++' 카테고리의 다른 글

[C,C++] 인-라인(in-line) 함수  (0) 2011.09.14
[C,C++] 가변 인자란 ...  (0) 2011.08.28
[C,C++] scanf 와 fgets  (0) 2011.08.27
[C,C++] sprintf 사용하기...  (2) 2011.08.23
[C,C++] 문자열에 대하여...  (0) 2011.08.23
Posted by 바람처럼..
|