Namespaces
Variants

fwrite

From cppreference.net
< c ‎ | io
헤더 파일에 정의됨 <stdio.h>
size_t fwrite ( const void * buffer, size_t size, size_t count,
FILE * stream ) ;
(C99 이전)
size_t fwrite ( const void * restrict buffer, size_t size, size_t count,
FILE * restrict stream ) ;
(C99 이후)

주어진 배열 buffer 에서 count 개의 객체를 출력 스트림 stream 에 기록합니다. 각 객체는 unsigned char 배열로 재해석된 것처럼 처리되며, 각 객체에 대해 size 회만큼 fputc 를 호출하여 해당 unsigned char 들을 순서대로 stream 에 기록합니다. 스트림의 파일 위치 지시자는 기록된 문자 수만큼 전진합니다.

오류가 발생하면 스트림의 파일 위치 지시자 결과 값은 불확정적입니다.

목차

매개변수

buffer - 기록될 배열의 첫 번째 객체를 가리키는 포인터
size - 각 객체의 크기
count - 기록될 객체의 개수
stream - 출력 스트림을 가리키는 포인터

반환값

성공적으로 기록된 객체의 수로, 오류가 발생하는 경우 count 보다 적을 수 있습니다.

만약 size 또는 count 가 0이면, fwrite 는 0을 반환하고 다른 동작을 수행하지 않습니다.

예제

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
enum { SIZE = 5 };
int main(void)
{
    double a[SIZE] = {1, 2, 3, 4, 5};
    FILE* f1 = fopen("file.bin", "wb");
    assert(f1);
    size_t r1 = fwrite(a, sizeof a[0], SIZE, f1);
    printf("wrote %zu elements out of %d requested\n", r1, SIZE);
    fclose(f1);
    double b[SIZE];
    FILE* f2 = fopen("file.bin", "rb");
    size_t r2 = fread(b, sizeof b[0], SIZE, f2);
    fclose(f2);
    printf("read back: ");
    for (size_t i = 0; i < r2; ++i)
        printf("%0.2f ", b[i]);
}

출력:

wrote 5 elements out of 5 requested
read back: 1.00 2.00 3.00 4.00 5.00

참고문헌

  • C23 표준 (ISO/IEC 9899:2024):
  • 7.21.8.2 fwrite 함수 (p: TBD)
  • C17 표준 (ISO/IEC 9899:2018):
  • 7.21.8.2 fwrite 함수 (p: TBD)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.21.8.2 fwrite 함수 (p: 335-336)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.19.8.2 fwrite 함수 (p: 301-302)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.9.8.2 fwrite 함수

참고 항목

형식화된 출력을 stdout , 파일 스트림 또는 버퍼에 출력합니다
(함수)
문자 문자열을 파일 스트림에 기록합니다
(함수)
파일에서 읽습니다
(함수)