luck2901   4년 전

정답을 맞추긴 했지만 의문점이 한가지 들어 질문 드립니다.

14번째줄에 scanf 대신 gets(word)를 쓰면 

입력 창에서 

3

happy

new

까지만 입력이 되고 3하고 출력이 되더라구요. (3번 포문이 돌아가기에 마지막 줄 year까지 입력을 해야하는데 출력이 떠버립니다)

gets함수를 썼을때 어떤 오류로 잘못된건지 알려주시면 감사하겠습니다. 

jaehoo1   4년 전

gets함수는 입력을 받을 때, 개행문자('\n')를 같이받습니다.

윗 줄(9번줄)에 있던 scanf("%d", &N); 에서는 정수만 입력받기 때문에 개행문자가 버퍼에 남아있고, 이 버퍼에 남아있던 개행문자가 처음 실행되는 gets에 들어가게 되면서 맨 처음 gets에 개행문자가 자동으로 들어가게 됩니다. 이를 방지하려면, scanf()문 바로 밑에 getchar()를 써서, 버퍼를 비워주면 됩니다.

luck2901   4년 전

아!! 정말 감사합니다 ㅎㅎ

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