首页 理论教育C语言程序设计基础(第3版)-数据块读写

C语言程序设计基础(第3版)-数据块读写

【摘要】:函数fwrite的功能则是将内存储器中指定区域的数据块写入与文件指针stream相关联的文件中。将一个5×10的整型二维数组数据存入指定文件中。编写程序实现功能:将例7.10所创建文件中的数据读出,并将数据按5行10列的矩阵形式进行显示。由于要接收从文件中读出的二维数组数据,程序中需要定义构成方式与之对应的二维数组。

为了能够实现对文件中构造数据类型对象的整体读取和加快文件数据读取处理速度,标准函数库中提供了关于数据块的读写函数fread和fwrite,它们的原型如下:

size_t fread(void*ptr,size_t size,size_t n,FILE*stream);

size_t fwrite(const void*ptr,size_t size,size_t n,FILE*stream);

函数fread的功能是从与文件指针stream相关联的文件中按指定长度读取一个数据块到内存储器的指定区域。

函数fwrite的功能则是将内存储器中指定区域的数据块写入与文件指针stream相关联的文件中。

fread和fwrite两个函数都有4个意义基本相同的参数,只不过操作方向刚好相反。4个参数的基本意义如下:

·ptr:指定内存储器中存储区域的首地址

·size:指定读取或写入的一个数据项的字节长度;(www.chuimin.cn)

·n:指定一次函数操作(调用)读取或写入的数据项个数。由此可知函数每次操作数据块的字节长度为size×n;

·stream:为与操作文件相关联的文件类型指针。

【例7.10】 将一个5×10的整型二维数组数据存入指定文件中(数组数据用随机数填充)。

上面程序代码中,定义了一个5行10列的二维数组,调用函数mkarr用两位以内的随机数填充数组元素。然后利用循环,每次将二维数组中的一行写入文件,循环5次将二维数组全部数据写入的文件中。写入数据到文件中时,也可以考虑将二维数组一次性写入文件,写入函数的调用方法参见程序中的注释。

【例7.11】 编写程序实现功能:将例7.10所创建文件中的数据读出,并将数据按5行10列的矩阵形式进行显示。

由于要接收从文件中读出的二维数组数据,程序中需要定义构成方式与之对应的二维数组。在具体的读取数据过程中,既可以用循环每次读出二维数组一行的方式进行,也可以将数组数据一次性地全部读出(参见程序中的注释)。