najjuno   4년 전

첫 번째 코드가 scanf를 사용한 코드이고 두 번째 코드가 gets를 사용한 코드인데

첫 번째 코드에서는 문제가 없지만 두 번째 코드에서는  N을 입력하면 N-1번의 입력밖에 받지 않고, 그룹 단어의 개수도 항상 1이 크게 나오길래 억지로 k의 범위를 1 늘리고 출력값을 1 감소시켰더니 맞게 나오더라고요

해보니까 두 번째 코드의 첫 번째 단어 입력을 프로그램이 멋대로 건너뛰는 것 같던데 왜 그런지 알 수 있을까요?

djm03178   4년 전

38번째 줄이 실행된 뒤에 입력 버퍼에는 개행 문자가 남는데, scanf의 %s는 화이트스페이스를 무시하고 입력받기 때문에 이 개행 문자가 아무 상관이 없지만, gets는 이 개행 문자를 보자마자 한 줄이 끝난 것으로 판단하고 바로 리턴하기 때문에 문제가 됩니다.

najjuno   4년 전

함수의 기능을 제대로 파악하지 못해서 생긴 일이었군요...명쾌한 답변 감사합니다!

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