求助,从txt中读入列向量老是不正确
我想实现从txt中读入一列数据的功能,并写到矩阵data中。txt中数据是:
1.2
2.33
3.444
4.1111
5.23213123
但是我的代码执行出来结果是:
-6277436776947227700000000000000000000000000000000000000000000000000.000000
-6277436783004630300000000000000000000000000000000000000000000000000.000000
-6277436786500976200000000000000000000000000000000000000000000000000.000000
-6277436788420357300000000000000000000000000000000000000000000000000.000000
-6277436790179563400000000000000000000000000000000000000000000000000.000000
让我很苦恼啊,各位看看怎么回事。
程序代码:
#include<stdio.h> #include<stdlib.h> double main() { char fpath[4][50]={"E:/aa.txt","E:/bb.txt","E:/cc.txt","E:/dd.txt"}; FILE *f1; //打开文件 long size_f1; //数据列数 double *data; //读入文件的动态数组 int i; int n=0; int mid; f1=fopen(fpath[0],"r"); //获取文件行数,方便创建动态数组 if(f1!=NULL){ while(!feof(f1)) { mid=fgetc(f1); //从txt文本中读取一个字符赋值给mid if(mid=='\n') //如果这个字符为换行符 n++; //记录txt数据行数 } size_f1=n+1; //最后一行没有换行符,所以+1 printf("txt行数为: %ld\n",size_f1); rewind(f1); //指针归位 //开始读入文本 data=(double*)malloc(sizeof(double)*size_f1); for (i=0;i<size_f1;i++) { fscanf(f1,"%f", &data[i]); // 循环读 printf("a=%f\n",data[i]); } fclose(f1); } free(data); }
另外,一般处理大量数据,使用二进制流还是文本流,有什么注意事项吗