fread(3)

이름
fread, fwrite - 이진(바이너리) 스트림 입력/출력

라이브러리
표준 C 라이브러리 (libc, -lc)

요약
#include <stdio.h>

size_t fread(void ptr[restrict .size * .nmemb],
             size_t size, size_t nmemb,
             FILE *restrict stream);
size_t fwrite(const void ptr[restrict .size * .nmemb],
             size_t size, size_t nmemb,
             FILE *restrict stream);

설명
함수 fread() 는 stream이 가리키는 스트림에서 각 size 바이트 만큼 긴 데이터의 nmemb 요소를 읽어, ptr이 가리키는 위치에 읽은 데이터들을 저장한다.

함수 fwrite() 는 ptr이 가리키는 위치에 있는 데이터들을 얻어서 각 size 바이트 만큼 긴 데이터의 nmemb 요소를 stream이 가리키는 위치의 스트림에 쓴다.

For nonlocking counterparts, see unlocked_stdio(3).

반환값
On success, fread() and fwrite() return the number of items read or written. This number equals the number of bytes transferred only when size is 1. If an error occurs, or the end of the file is reached, the return value is a short item count (or zero).

The file position indicator for the stream is advanced by the number of bytes successfully read or written.

fread() 는 EOF와 에러를 구분하지 않는다. 그리고 호출자는 무엇이 일어났는지를 결정 하기 위해 feof(3) 와 ferror(3) 를 사용해야 한다.

속성
이 섹션에서 사용되는 용어에 대한 설명은 attributes(7)을 참조하십시오.
상호 작용 | 속성 | 번호
fread(), fwrite() | Thread safety | MT-Safe

표준
POSIX.1-2001, POSIX.1-2008, C99.

폐제
The program below demonstrates the use of fread() by parsing /bin/sh ELF executable in binary mode and printing its magic and class:

    $ ./a.out
    ELF magic: 0x7f454c46
    Class: 0x02

  Program source
    #include <stdio.h>
    #include <stdlib.h>

    #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

    int
    main(void)
    {
        FILE           *fp;
        size_t         ret;
        unsigned char  buffer[4];

        fp = fopen("/bin/sh", "rb");
        if (!fp) {
            perror("fopen");
            return EXIT_FAILURE;
        }

        ret = fread(buffer, sizeof(*buffer), ARRAY_SIZE(buffer), fp);
        if (ret != ARRAY_SIZE(buffer)) {
            fprintf(stderr, "fread() failed: %zu\n", ret);
            exit(EXIT_FAILURE);
        }

        printf("ELF magic: %#04x%02x%02x%02x\n", buffer[0], buffer[1],
               buffer[2], buffer[3]);

        ret = fread(buffer, 1, 1, fp);
        if (ret != 1) {
            fprintf(stderr, "fread() failed: %zu\n", ret);
            exit(EXIT_FAILURE);
        }

        printf("Class: %#04x\n", buffer[0]);

        fclose(fp);

        exit(EXIT_SUCCESS);
    }

추가 참조
read(2), write(2), feof(3), ferror(3), unlocked_stdio(3)

번역
이 매뉴얼 페이지의 한국어 번역은 다음에 의해 편집되었습니다: 정강훈 <skyeyes@soback.kornet.net>

이 번역은 무료 문서입니다. 저작권 조건에 대해서는 GNU General Public License 버전 3 (https://www.gnu.org/licenses/gpl-3.0.html) 이상을 읽으십시오. 책임이 없습니다.

이 매뉴얼 페이지의 번역에서 오류를 발견하면 translation-team-ko@googlegroups.com 로 이메일을 보내주십시오.