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/cpp/io/c/fwrite

Spec-Zone.ru

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