ANSI C文件系统提供fread()和fwrite()两个函数,用于读/写长于一字节的数据类型。这两个函数允许读/写各种类型的数据块。它们的原型是:
size_t fread(void *buffer,size_t num_bytes,size_t count,FILE *fp);size_t fwrite(const void *buffer,size_t num_bytes,size_t count,FILE *fp);
对fread()而言,buffer是接收读入数据的内存区的指针。 对fwrite()而言,buffer是写入到那个文件的信息的指针。
count的值确定读/写多少项,每项长度等于num_bytes。
fp是指向事先打开的流的指针。
正常情况下,fread()返回读入的项数,fwrite()返回写出的项数。
只要文件按二进制打开,fread()和fwrite()就可以读/写各类信息。以下程序先向文件写double,int和long型数据,然后再读回。
//向磁盘文件写入一些非字符型的数据,并且再将其读回到内存#include <stdio.h>#include <stdlib.h> int main(void){ FILE *fp; double d1 = 12.23,d2; int i1 = 101,i2; long l1 = 123023L,l2; if((fp=fopen("test", "wb+"))==NULL) { printf("Cannot open file.\n"); exit(1); } //将3个值写入到文件中 fwrite(&d1, sizeof(double), 1, fp); fwrite(&i1, sizeof(int), 1, fp); fwrite(&l1, sizeof(long), 1, fp); //重置到文件的开始处 rewind(fp); //将3个值从文件中读出 fread(&d2, sizeof(double), 1, fp); fread(&i2, sizeof(int), 1, fp); fread(&l2, sizeof(long), 1, fp); printf("%f %d %ld", d, i, l); fclose(fp); return 0;}