首页 理论教育 C语言程序设计:读写文件函数

C语言程序设计:读写文件函数

时间:2023-11-23 理论教育 版权反馈
【摘要】:C语言中提供的fread和fwrite函数,一次可以完成一个“数据块”的读、写操作,其一般使用形式为:其中:buffer是一个指针,对于fread函数来说,指的是要读入数据的存放地址,对于fwrite函数,则是指要输出到文件中的数据块的地址,这里的地址指的都是首地址。一般讲fread和fwrite用于处理二进制文件。save函数中使用fread函数将数据存储到磁盘文件stu中。

C语言程序设计:读写文件函数

用fgetc和fputc函数,一次只能读、写一个字符(字节),若要一次读入或输出一组字节比较麻烦。C语言中提供的fread和fwrite函数,一次可以完成一个“数据块”的读、写操作,其一般使用形式为:

其中:

buffer是一个指针,对于fread函数来说,指的是要读入数据的存放地址,对于fwrite函数,则是指要输出到文件中的数据块的地址,这里的地址指的都是首地址。

size:要读写的字节数,这里的字节数不是数据块中全部的字节数,而是数据块中一个数据的字节数。

count:要读写多少个size字节的数据,也就是要读写的数据的个数。

fp:文件指针。

一般讲fread和fwrite用于处理二进制文件。

【例10-2】将结构体数组中学生的信息保存到盘stu文件中。(www.xing528.com)

程序中用数组名作为函数参数将要保存的数组的首地址s传递给形参p,此时p代表要保存的数据的首地址。save函数中使用fread函数将数据存储到磁盘文件stu中。其中sizeof(STU)是要保存的一个STU单元的字节数,n指出一次要保存n个这样的结构体单元。

该程序运行后没有任何结果显示,但是在打开D盘后,可以看到多了一个名字叫作stu的数据文件。

【例10-3】输出数据文件stu中的数据,验证例10-2中函数save的正确性。

程序中没有给s数组中输入数据,而是使用fread函数从fp所指文件中一次读入了5个结构体到s作为首地址的内存中,然后用循环输出了s数组中每一个单元的值。可以看到输出和例10-2中存储的数据一样,这说明例10-2确实将数组中的5个结构体的信息存储到了文件stu中。

当然程序中也可以一次读写一个结构体单元,循环5次可以完成,但此时注意要用每一个数组单元的地址作为数据块首地址,例10-2和例10-3中写数据和读数据的源程序修改如下:

这种方法比较麻烦,在处理结构体数组时没有必要。但是单链表中的每一个结点都是单独分配的,其地址在内存中不连续,因此在处理单链表时可以使用这种方法,对单链表中的结点依次执行读或写操作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈