fwrite

fwrite

在头文件中定义
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。这些目的通过reinterepreting每个对象作为数组写为如果unsigned char与呼叫fputc size时间为每个对象写入那些unsigned chars转换stream,为了。流的文件位置指示符按写入的字符数进行提前。

参数

缓冲-指向数组中要写入的第一个对象的指针
尺寸-每个对象的大小
计数-要写入的对象的数量
-指向输出流的指针

返回值

成功写入的对象数量可能少于count发生错误时的数量。

如果size或者count为零,则fwrite返回零且不执行其他操作。

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

输出:

wrote 5 elements out of 5 requested read back: 1.000000 2.000000 3.000000 4.000000 5.000000

参考

  • C11标准(ISO / IEC 9899:2011):

printfprintfsprintfsnprintfprintf_sfprintf_ssprintf_ssnprintf_s(C99)(C11)(C11)(C11)(C11)打印格式化输出到标准输出,文件流或缓冲区(功能)
的fputs将字符串写入文件流(函数)
FREAD从文件读取(功能)