fwrite
Определено в заголовочном файле <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) |
Записывает count объектов из заданного массива buffer в выходной поток stream. Объекты записываются так, как будто каждый объект переинтерпретируется как массив из unsigned char и вызывается fputc size раз для каждого объекта, чтобы записать эти unsigned char в stream, в порядке. Указатель позиции файла для потока сдвигается на количество записанных символов.
Если произошла ошибка, результирующее значение указателя позиции файла для потока неопределено.
Параметры
| buffer | - | указатель на первый объект в массиве, который необходимо записать |
| size | - | размер каждого объекта |
| count | - | количество объектов, которые необходимо записать |
| stream | - | указатель на выходной поток |
Возвращаемое значение
Количество успешно записанных объектов, которое может быть меньше count если произошла ошибка.
Если size или count равно нулю, fwrite возвращает ноль и не выполняет никаких других действий.
Пример
#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:2023):
- 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
См. также
|
(C99)(C11)(C11)(C11)(C11) | печатает отформатированный вывод в stdout, в поток файла или в буфер (функция) |
| записывает строку символов в поток файла (функция) |
|
| считывает из файла (функция) |
|
Документация C++ по fwrite |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/io/fwrite