fread로 21바이트만큼 읽으면?
fread(buffer, 21, 1, fp);처럼 buffer의 크기보다 큰 값인 21로 읽으면 어떻게 될까요? 문제없이 "hello, world!" 문자열이 읽어집니다. fread는 버퍼 크기와는 상관없이 파일에서 읽을 수 있는 최대 크기만큼 읽기 때문입니다. hello.txt에는 13바이트만큼 저장되어 있으므로 20이나 21을 지정해도 13바이트만큼 읽습니다.
fread는 파일 크기에 따라 읽기 성공 여부를 반환하는데 파일 크기 13바이트보다 큰 20이나 21을 지정하면 지정한 값만큼 못 읽었기 때문에 0이 반환됩니다. 읽은 횟수 1을 반환하려면 fread(buffer, 13, 1, fp);처럼 파일 크기 13을 지정해주면 됩니다.
==> 지정한 크기만큼 읽어야지 끝난다...
※ 표준 입출력 함수를 사용할 경우 : 파일 버퍼 -> 소켓 버퍼 -> 실제 전송 혹은 수신.
파일 포인터 = FILE *
소켓 기반의 표준 입출력 함수 사용을 위해 file descriptor 기반으로 파일 포인터 생성