cyclone472   6년 전

혼자 앓다가 도저히 모르겠어서 질문 올립니다.

현재 이 코드는 96%에서 틀렸다고 나오는데요

제 코드에서 10~11행을 주석처리하고 9행의 주석처리를 해제한다음 채점하면 결과가 맞게 나옵니다.

또한 9행부터 11행까지를 전부 주석처리하고 gets(ch); 만 추가해도 정답이 나옵니다.

결국 fgets로 문장을 받는 부분에 오류가 있다는 말인데, 이 부분이 도저히 이해가 되지 않습니다ㅠㅠ


fgets로 문자열을 받으면 문자열의 마지막에 있는 '\n'까지 받아진다고 알고 있어서 11행을 추가했고, 실제로 11행만 주석처리를 하면 처음부터 아예 틀린 결과가 나옵니다.

어떤 부분에서 틀리게 된 건지 알고 싶어서 질문 드립니다.

또한 제 코드는 시간이 12ms가 나오는데, 다른 맞추신 분들과 제 코드가 얼추 비슷한 것 같은데 왜 다른 분들은 4ms안에 돌아가는 건지도 궁금합니다.

답변 부탁드립니다ㅠㅠ

sgchoi5   6년 전

fgets 는 버퍼만 충분하면 EOF 까지 읽어들이네요.. 그래서, \n 이 있을 수도 있겠는데..

현재 코드는 주어진 TC 의 문자열이 \n 이 없다면 마지막 글자를 지우는게 문제가 아닐지..

마지막이 \n 인지 확인하고, \n 을 null char(\0) 로 해주시면 어떨까 싶으네요..

cyclone472   6년 전

그대로 했더니 맞았네요 감사합니다!ㅎㅎㅎ

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