Spec-Zone.ru › C++

std::fwrite

Определено в заголовке <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 равно нулю, fwrite возвращает ноль и не выполняет никаких других действий.

Пример

#include <array>
#include <cstdio>
#include <vector>
 
int main ()
{
    // write buffer to file
    if (std::FILE* f1 = std::fopen("file.bin", "wb"))
    {
        std::array<int, 3> v = {42, -1, 7}; // underlying storage of std::array is an array
        std::fwrite(v.data(), sizeof v[0], v.size(), f1);
        std::fclose(f1);
    }
 
    // read the same data and print it to the standard output
    if (std::FILE* f2 = std::fopen("file.bin", "rb"))
    {
        std::vector<int> rbuf(10); // underlying storage of std::vector is also an array
        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

См. также

printffprintfsprintfsnprintf
(C++11)
выводит отформатированный вывод в stdout, поток файла или буфер
(функция)
fputs
записывает строку символов в поток файла
(функция)
fread
считывает данные из файла
(функция)
C документация для fwrite

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/io/c/fwrite

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API