dreamian   2년 전

fgets 함수를 사용하면 자꾸 97% 부근에서 안 되고

scanf 함수를 이용하니까 되었습니다.


출력값에는 차이가 없는 것 같은데 어떤 점이 문제인지 혹시 알 수 있을까요?

djm03178   2년 전

fgets 함수는 주어진 수 - 1개의 문자까지만 읽어 저장합니다. 따라서 fgets(str,1000000,stdin); 는 100만 글자가 입력으로 들어오면 마지막 한 글자를 읽지 못합니다.

dreamian   2년 전

답변 정말! 감사합니다.

하지만 제가 1000005까지 숫자를 늘여도 똑같이 안 되던데 그 경우는 왜 안 되는지 궁금합니다

djm03178   2년 전

저기가 문제인 것 같네요.

fgets 함수는 개행 문자가 나타나면 버리지 않고 그대로 목적지에 저장해줍니다. 채점 데이터에 문자열의 끝에 개행 입력이 들어오는 경우가 있을 수 있습니다. 그런데 개행 문자의 값이 a>=0 && a<=25 라는 조건에 걸리기 때문에 잘못된 측정을 하게 됩니다.

하지만 scanf의 %s는 모든 화이트스페이스를 문자열에 포함하지 않기 때문에 문제가 발생하지 않습니다.

dreamian   2년 전

답변 정말 감사합니다!

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