-
카테고리
-
세부 분야
시스템
-
해결 여부
미해결
왜 읽을 때만 버퍼가 필요한지요?
19.04.04 20:32 작성 조회수 93
0
안녕하세요. 초보자입니다. 혹시 뒷부분에 관련 내용이 나오는지 잘 몰라서 질문합니다.
왜 fgets 할 때만 버퍼가 필요하고 fputs에는 버퍼가 필요하지 않는 것인지요?
fputs에 필요없으면 사실은 fgets에도 없이 바로 읽을 수 있을 것 같은데..
궁금합니다..!
답변을 작성해보세요.
2
ProgCoach4U
지식공유자2019.04.05
fgets API가 반드시 버퍼를 파라미터로 넣어줘야 하는 방식으로 설계되었기 때문이에요. 한마디로 만든 사람이 그렇게 만들었으니 어쩔 수 없는 것이죠. 만약 fgets()도 strdup()과 같이 API 내부에서 메모리를 동적으로 할당받아 리턴해주는 형식으로 구현했다면 버퍼 없이 파일 내용을 읽을 수 있겠죠. 하지만 fgets API가 call-by-reference(혹은 call-by-address라고도 하죠) 방식으로 파일을 읽은 내용을 API caller에게 전달하도록 설계/구현된 것입니다.
fputs API도 파일에 쓸 내용을 버퍼(캐릭터 배열 혹은 캐릭터 포인터)에 저장해 넘길 수 있습니다. 반드시 큰 따옴표로 된 문자열 상수(예: "hello world")를 넘겨야 하는 것은 아닙니다.
이해가 되셨는지 모르겠네요. 이외에도 더 궁금한 내용 있으시면 질문 남겨주세요~
답변 1