EOF

Min Hyeok·2021년 9월 9일
0

오늘도 고쨩은 백준을 푼다.

https://www.acmicpc.net/problem/10951

이 문제를 풀던 중..

"입력이 끝날 때까지 A+B를 출력하는 문제. EOF에 대해 알아 보세요."

?

EOF에 대해 알아 보세요.

이거에 대해서 뭔지는 안다. 아니, 뭔 "뜻"인지는 안다. End Of File. 파일의 끝..

.. 멀 더 알아보라고.

근데 문제 들어가서 그냥 이렇게 풀면 되겠다~ 생각하고 푸니까 틀렸다더라? "출력초과" 뜨더라.
그래서 알아 봤읍니다.

"C언어는 운영체제와 상관없이, 파일의 끝에 도달했을 때 언제나 특별한 값을 반환하도록 합니다.

EOF는 End Of File의 약자로 파일의 끝을 표현하기 위해 -1로 정의된 상수입니다."

그러니까.. 문자열 마지막에 0들어가는거랑 비슷한 얘기다.

이 위의 문제에서 제시한 의도는 "입력 받을 거 다 받고 출력도 다 하고 난뒤에 파일 끝내라.

이건 아무리봐도 내가 지금 알 수 있는 지식으론 풀 수 없었다. 네이버 ON.

우선 내가 새로 알게된 지식 몇개. 우선 EOF에 대해서.

그리고 두번째는 while문의 종결조건에 scanf를 넣을 수 있다..

while(scanf("%d %d", &a, &b)!=EOF) 이렇게.
호오. 물론 1학년때 배우고 까먹었을 수도 있지만, 2년 됐잖아. 까먹을 수도 있지.

출력초과가 나왔던 이유는 우리가 while문의 끝을 정해놓지 않았기 때문에 scanf가 무한루프 돌아서 메모리 할당 범위를 넘어섰기 때문이에요. (출처:https://develop247.tistory.com/7)

그렇단다. aradooja.

0개의 댓글