1316번 - 그룹 단어 체커
정답을 맞추긴 했지만 의문점이 한가지 들어 질문 드립니다.
14번째줄에 scanf 대신 gets(word)를 쓰면
입력 창에서
3
happy
new
까지만 입력이 되고 3하고 출력이 되더라구요. (3번 포문이 돌아가기에 마지막 줄 year까지 입력을 해야하는데 출력이 떠버립니다)
gets함수를 썼을때 어떤 오류로 잘못된건지 알려주시면 감사하겠습니다.
gets함수는 입력을 받을 때, 개행문자('\n')를 같이받습니다.
윗 줄(9번줄)에 있던 scanf("%d", &N); 에서는 정수만 입력받기 때문에 개행문자가 버퍼에 남아있고, 이 버퍼에 남아있던 개행문자가 처음 실행되는 gets에 들어가게 되면서 맨 처음 gets에 개행문자가 자동으로 들어가게 됩니다. 이를 방지하려면, scanf()문 바로 밑에 getchar()를 써서, 버퍼를 비워주면 됩니다.
아!! 정말 감사합니다 ㅎㅎ
댓글을 작성하려면 로그인해야 합니다.
luck2901 4년 전
정답을 맞추긴 했지만 의문점이 한가지 들어 질문 드립니다.
14번째줄에 scanf 대신 gets(word)를 쓰면
입력 창에서
3
happy
new
까지만 입력이 되고 3하고 출력이 되더라구요. (3번 포문이 돌아가기에 마지막 줄 year까지 입력을 해야하는데 출력이 떠버립니다)
gets함수를 썼을때 어떤 오류로 잘못된건지 알려주시면 감사하겠습니다.