C语言如何正确实现txt文件中多个浮点数值的导入与导出?
C语言txt文件浮点数值读写异常问题解决方案
问题根因
读取异常是写入阶段的逻辑错误导致的:
- 写入浮点数时没有添加任何分隔符,所有浮点数字符串连续拼接在一起。例如5.000000和6.000000会被拼接为
5.0000006.000000,fscanf读取%f格式时会将连续的数字串识别为单个浮点数,因此仅能读到第一个拼接出来的数值,后续读取全部失败。 - 写入代码存在冗余错误行
fprintf(f,"%f",f);,这行将FILE类型的指针变量强制作为浮点数输出,会向文件末尾写入无意义的垃圾值。
修复方案
第一步:修改写入代码
给每个写入的浮点数后增加空格/换行作为分隔符,同时删除冗余的错误写入行:
#include"stdio.h" #include"stdlib.h" int main(){ FILE *f; f = fopen("abcde","w"); if(f==NULL){ printf("Error"); exit(0); } float a,b,c,d,e; a=5; b=6; c=7; d=8; e=9; // 每个%f后加空格作为分隔符 fprintf(f,"%f ",a); fprintf(f,"%f ",b); fprintf(f,"%f ",c); fprintf(f,"%f ",d); fprintf(f,"%f ",e); // 删除原代码中错误写入FILE指针的行 fclose(f); }
第二步:读取代码无需修改即可正常运行
fscanf读取%f时会自动跳过空格、换行等空白分隔符,原有的读取逻辑已经可以正确识别分隔后的5个浮点数值,运行后即可正常输出所有变量。
内容的提问来源于stack exchange,提问作者Ngoc Anh
相关产品推荐
相关产品推荐

