Namespaces
Variants

fread

출처: ko.cppreference.net
< c | io
 
 
파일 입출력
타입 및 객체
        
함수
파일 접근
(C95)
비형식 입출력
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

형식 입력
 
헤더 <stdio.h>
size_t fread( void* buffer, size_t size, size_t count,
              FILE* stream );
(C99까지)
size_t fread( void* restrict buffer, size_t size, size_t count,
              FILE* restrict stream );
(C99부터)

주어진 입력 스트림 count에서 배열 buffer로 최대 stream개의 객체를 읽습니다. 각 객체에 대해 fgetc size를 호출하는 것처럼 수행하며, 얻은 결과를 순서대로 buffer의 연속적인 위치에 저장합니다. unsigned char은(는)

의 배열로 해석됩니다. 스트림의 파일 위치 표시자는 읽은 문자 수만큼 전진합니다.

같이 보기

매개변수 buffer -
읽은 객체를 저장할 배열을 가리키는 포인터 size -
각 객체의 바이트 단위 크기 count -
읽을 객체의 개수 stream -

읽을 스트림

반환값count성공적으로 읽은 객체의 개수. 오류나 파일 끝 조건이 발생하면

보다 작을 수 있습니다. sizecount또는 fread가 0이면

fread은 0을 반환하고 다른 동작을 수행하지 않습니다. 은(는) 파일 끝과 오류를 구분하지 않으므로, 호출자는 feof와 ferror

을 사용하여 어떤 상황이 발생했는지 확인해야 합니다.

#include <stdio.h>

enum { SIZE = 5 };

int main(void)
{
    const double a[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0};
    printf("Array has size %ld bytes, element size: %ld\n", sizeof a, sizeof* a);
    FILE* fp = fopen("test.bin", "wb"); // must use binary mode
    fwrite(a, sizeof* a, SIZE, fp); // writes an array of doubles
    fclose(fp);

    double b[SIZE];
    fp = fopen("test.bin","rb");
    const size_t ret_code = fread(b, sizeof b[0], SIZE, fp); // reads an array of doubles
    if (ret_code == SIZE)
    {
        printf("Array at %p read successfully, contents:\n", (void*)&a);
        for (int n = 0; n != SIZE; ++n)
            printf("%f ", b[n]);
        putchar('\n');
    }
    else // error handling
    {
        if (feof(fp))
            printf("Error reading test.bin: unexpected end of file\n");
        else if (ferror(fp))
            perror("Error reading test.bin");
    }

    fclose(fp);
}

이 코드 실행하기

Array has size 40 bytes, element size: 8
Array at 0x1337f00d6960 read successfully, contents:
1.000000 2.000000 3.000000 4.000000 5.000000

가능한 출력:

  • 참조
  • C23 표준 (ISO/IEC 9899:2024):
  • 7.21.8.1 fread 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.21.8.1 fread 함수 (p: 243-244)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.21.8.1 fread 함수 (p: 335)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.19.8.1 fread 함수 (p: 301)
  • C89/C90 표준 (ISO/IEC 9899:1990):

4.9.8.1 fread 함수

(C11)stdin, 파일 스트림 또는 버퍼에서 형식화된 입력을 읽습니다.
(함수)
파일 스트림에서 문자 문자열을 가져옵니다.
(함수)
파일에 씁니다.
(함수)
C++ 문서 for fread