song3175   1년 전

입력받을때 이중반복문으로 입력을 받았는데 getchar 함수를 써주지 않으면 입력이 이상하게 받아지더라고요 .. 왜 getchar 함수를 써야하는지 궁금합니다.

pill27211   1년 전

R과 C를 입력 받을 때, 입력 버퍼에는 R의 대한 값, C의 대한 값만이 있는 게 아닌 엔터('\n')도 같이 들어 오게 됩니다.

이 때 정수형 숫자(R, C)를 읽어오면서 버퍼에는 ('\n')만이 남게 되죠.

여기서, %c는 아시다시피 입력 버퍼로부터 문자 '하나'만을 읽어 옵니다.

그래서 입력 및 읽어 오려고 보니, 입력 버퍼에 이미 ('\n')이 있어서 입력된 것이라 치고 scanf()는 ('\n')를 가져와 map1[i][j]에 저장하게 됩니다.

즉 getchar()의 역할은, 입력 버퍼를 비워주어 의도된데로 입력을 받기 위함에 있습니다.

위와 같은 상황은 scanf()로 %d와 같이 숫자만을 계속 읽어올 땐 발생하지 않습니다.('\n'는 scanf()가 숫자라 판단하지 않기 때문)

앞에서의 입력이 있고, 이후 %c 서식문자를 사용할 때 발생하지요.

댓글을 작성하려면 로그인해야 합니다.