关于scanf读数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 16:49:35
最近在学C的文件操作,想从TXT文件里面读出数据使用。用scanf(fp,"%d",&data)对整数数据可以用,但想读出有小数的就不行了。具体程序如下:
int i,j;
double a[10],data;
FILE *fp=fopen("C:\\TC\\file.txt","r");
while(i<=3)
{
fscanf(fp,"%f",&data);
a[i]=data;
i++;
}
for(j=0;j<=3;j++)
printf("%f ",a[j]);
fclose(fp);
文件中的数据是:1.1 2.2 3.3 4.4 程序运行出来的数全是0.000000
不知哪位大虾能解答下啊?
上面i=0

i没有初始值

你把fscanf(fp,"%f",&data);改成fscanf(fp,"%lf",&data); 把printf("%f ",a[j]); 改成printf("%lf ",a[j]); 试试,再不行就看看你的函数与mian函数的衔接。祝你早日成功!

注意:
问题出在数据类型和输入类型不一致上.
a[10] 和 data都为 double 型,那么输入就要为 %lf格式.当然,输出格式可为 %f 型.
也就是说 当 f为 double 型时:
scanf("%f",&f);和scanf("%lf",&f);完全不一样,
而printf("%f",f);和 printf("%f",f); 则没有区别....

fscanf()的问题其实也是scanf()的问题,只不过,scanf()是默认 stdin而已.
scanf()是一个很麻烦的函数,多花点时间研究研究会有好处的...