下列两个函数执行二进制I/O操作:
- #include <stdio.h>
- size_t fread(void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp);
- size_t fwrite(const void *restrict ptr, size_t size, size_t nobj, FILE *restrict fp);
返回值:读或写的对象数
这两个函数有两种常见的用法:
- 读或写一个二进制数组。
- 读或写一个结构。
对于读,如果出错或到达文件尾端,则此数字可以少于nobj。在这种情况下,应调用ferror或feof以判断究竟属于哪一种情况。对于写,如果返回值少于所要求的nobj,则出错。
使用二进制I/O的基本问题是,它只能用于读在同一个系统上已写的数据。其原因是:
- 在一个结构中,同一成员的偏移量可能因编译器和系统而异(由于不同的对准要求)。
- 用来存储多字节整数和浮点值的二进制格式在不同的机器体系结构间也可能不同。