Namespaces
Variants

std:: fwrite

From cppreference.net
< cpp ‎ | io ‎ | c
헤더 파일에 정의됨 <cstdio>
std:: size_t fwrite ( const void * buffer, std:: size_t size, std:: size_t count, std:: FILE * stream ) ;

최대 count 개의 이진 객체를 주어진 배열 buffer 에서 출력 스트림 stream 으로 기록합니다. 각 객체는 unsigned char 배열로 재해석되고, std::fputc 를 각 객체마다 size 회 호출하여 이러한 unsigned char 들을 순서대로 stream 에 기록하는 것처럼 작성됩니다. 스트림의 파일 위치 표시자는 기록된 문자 수만큼 전진합니다.

객체가 TriviallyCopyable 하지 않다면, 동작은 정의되지 않습니다.

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

목차

매개변수

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

반환값

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

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

예제

#include <array>
#include <cstdio>
#include <vector>
int main ()
{
    // 버퍼를 파일에 쓰기
    if (std::FILE* f1 = std::fopen("file.bin", "wb"))
    {
        std::array<int, 3> v = {42, -1, 7}; // std::array의 내부 저장소는 배열입니다
        std::fwrite(v.data(), sizeof v[0], v.size(), f1);
        std::fclose(f1);
    }
    // 동일한 데이터를 읽어 표준 출력에 표시
    if (std::FILE* f2 = std::fopen("file.bin", "rb"))
    {
        std::vector<int> rbuf(10); // std::vector의 내부 저장소 역시 배열입니다
        std::size_t sz = std::fread(rbuf.data(), sizeof rbuf[0], rbuf.size(), f2);
        std::fclose(f2);
        for (std::size_t n = 0; n < sz; ++n)
            std::printf("%d\n", rbuf[n]);
    }
}

출력:

42
-1
7

참고 항목

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