标签:fp 文件 10 double 基础 num size
## 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。标签:fp,文件,10,double,基础,num,size 来源: https://blog.51cto.com/u_15058552/2900527
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。