首页 > 其他 > 详细

C基础——文件I/O (5)

时间:2021-06-13 18:54:33      阅读:20      评论:0      收藏:0      [点我收藏+]
## 1、二进制I/O   此前介绍的标准I/O函数都是面向文本地,用于处理字符和字符串。在使用这种I/O函数处理数值型数据时,会将数值转换为字符串。 ```C double num = 1/3; fprintf(fp, "%f", num); ```   以上代码,将num存储为字符:0.333333。当改变转换说明时,也将改变存储num所需的空间数量,导致num被存储为不同的值。当使用%.2f时,致使num的精度损失,且无法恢复。   为了使数值数据在存储前后保持一致,最精确的做法是使用与计算机相同的位组合来存储它们。   如果以程序所用的表示法把数据存储在文件中,则称以***二进制模式***存储数据。在此模式下,不存在从数值型到字符串地转换过程。 ## 2、二进制I/O函数:fread()和fwrite() ### (1)fwrite() ```C size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb, FILE* restrict fp); ```   函数功能:将二进制数据写入文件。   指针ptr是待写入数据块的地址   size表示待写入数据块的大小(以字节为单位)   nmemb表示待写入数据块的数量   fp指向待写入的文件 ```C char buffer[256]; fwrite(buffer, 256, 1, fp); // 将一块256字节的数据从buffer中写入fp所指定的文件。 double num[10]; fwrite(num, sizeof(double), 10, fp); // 将一个内含10个double类型值的数组写入文件,数据被分为分10份 ``` ### (2)fread() ```C size_t fread(void* restrict ptr, size_t size, size_t nmemb, FILE* restrict fp); ```   ptr是待读取文件数据在内存中的地址   fp指向待读取文件   此函数用于读取被fwrite()写入文件的数据。 ```C double num[10]; fread(num, sizeof(double), 10, fp); //从fp指向的文件中读取10个double类型的值,存入num数组 ``` ## 3、文件结尾和读写出错 ### (1)文件结尾 ```C int feof(FILE* fp); ```   如果标准输入函数返回EOF,则feof()返回一个非0值,否则返回0。 ### (2)文件读写出错 ```C int ferror(FILE* fp); ```   当读或写出现错误时,ferror()返回一个非0值,否则返回0。

C基础——文件I/O (5)

原文:https://blog.51cto.com/u_15058552/2900527

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!