sourish92   7년 전

도저히 반례를 못 찾겠다고 질문을 작성했다가 글을 삭제했는데요,

제가 알기로는 fgets()와 gets()의 차이가 뒤에 개행 문자가 포함되냐 안되냐의 차이로 알았는데,

fgets로 제출하면 틀리고, gets로 제출하면 정답이 나오더라구요

혹시 제가 잘못알고 있는건가요?

이거하느라 10번도 넘게 제출한거 같은데..

scanf("%[^\n]s", in);

를 사용하면 정답

gets(in);

를 사용해도 정답

fgets(in, MAX_LENGH, stdin);
in[strlen(in) - 1] = '\0';

는 오답이 나옵니다.

이유가 뭔가요..?


ntopia   7년 전

fgets() 로 입력을 받는다고 해서 항상 개행문자가 들어오는 것이 아닙니다.

언제 들어오느냐? 하면 바로 입력데이터에 실제로 개행문자가 있는 경우 입니다.

이 문제의 데이터는 맨 끝에 개행문자 없이 그냥 한줄만 주어지고 끝나는 것 같네요.

그래서 코드를 저렇게 쓰면 마지막 글자가 지워지는 효과가 생겨 틀린 답을 출력하게 될 것 같습니다.

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