这是一个看似很简单的问题,却耗费了一天的时间,其实就是一个小小的问题,但却导致数据读不进来,因此之后的程序也就不能运行。
做个总结,这种错误希望以后不要再犯,浪费不必要的时间!
代码如下:
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
char *filepath="D:\\VSprogram\\\pcd\\pcd\\SexpandResult3D .txt"; //要写绝对路径,而且要为双斜杠“//”
double array[55061][3]={NULL}; //还是赋予准确的行数比较好,不然会乱
//双精度的要为double类型的数组
FILE *fp;
int main()
{
if((fp=fopen(filepath,"r"))==NULL)
{ printf("can not open %s",filepath);
}
while(!feof(fp))
{
for (int m=0;m<55061;m++)
{
fscanf(fp,"%lf %lf %lf",&array[m][0],&array[m][1],&array[m][2]);
} //切记!!!双精度时要为lf,否则读不进去,害死人!!!
}
fclose(fp);
for(int i=0;i<55061;i++)
{
printf("%lf %lf %lf\n",array[i][0],array[i][1],array[i][2]);
} //这儿也是!!lf!!!
return 0;
}
读整型数据是没有问题的。问题出在双精度数据上,此时输入输出时的数据格式要改为lf,而不是f,否则读不进数据,但也不报错,让人很郁闷!