이 문서는 제 삽질과 해당 프로젝트를 풀기 위한 과정을 기록한 문서입니다. 코딩과 문서를 병행으로 작성하기에, 맞지 않는 지식이 난무할 수 있어 정답 참고용으로는 부적합하다는 것을 알아주세요.
예를 들어, "ABCDE"라는 문자열을 읽을 때 Read함수에 버퍼사이즈를 3으로 주면, ABC라는 값까지 읽어올 수 있다.
처리 결과, read함수가 EOF를 만날 시 0을 반환한다는 사실을 깨닫고 해당 함수를 수정함.
수정 후 출력 결과, 또다른 문제가 발생하기 시작함. BUFFER_SIZE대로 읽어오기때문에, 한번 출력됐어도 해당 함수는 EOF를 만나 읽기가 끝나버린다.
또 의문이 생겼음. 버퍼의 크기가 1일 경우 gnl에서의 출력 결과는 어떻게 나와야하는가?
감사하게도 hyukim님이 해답을 주셔서 의문이 풀림.
BUFFER을 1로 주고 5번을 출력하게 해보았다.
오! 진짜로 4문자 + 공백 이렇게 출력이 된다. 그렇다면 생각을 다시 해야하는데....
오히려 이것은 쉬워진 것 같다. 함수 내부에서 read문을 돌리며 한줄씩 끊어주면 되니까.
제일 쉬운 케이스. 넣고, 돌리고 끝
이게 제일 복잡하다고 생각된다. 어떻게 해야하지? 한번에 EOF까지 다 긁어모아온다. 여기서 한줄을 뜯어줘도, 어떻게 EOF라고 판단을 하지? 문제에서는 가능한 한 적게 읽어오라고 했다. 그런데 사이즈77길이짜리 문자열에 BUFFER_SIZE가 1024가 들어가면 어쩔 수 없이 한줄을 다 읽어오지않나???? 일단 다 받아오고 호출할때마다 한줄씩 뜯어줄까? 그런데 그건
여기서 하지 말라고 했는데. 버퍼가 큰데 어떻게 그걸 처리하지?
일단 졸리니 내일 하자..