c++ 文件读取问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 21:30:18
#include <fstream.h>
#include <stdio.h>
#include <iostream.h>
void main(void)
{
double a[10];
int i;
FILE *stream;
stream=fopen("c:/a.txt","r+");
for(i=0;i<10;i++){
fscanf(stream,"%f",a[i]);
cout <<a[i]<<endl;}
}

为什么打印出来的数字明显不对?全都是非常非常大的数字,而且都一样。

虽然说是C++的程序,但实际上你所使用的都是C的函数(fopen,fscanf)

错误一:WINDOWS下文件名应该是“C:\\a.txt”,是双划线,前一个是转义字符,后一个是真正表示下一级目录。由于这个地方错了,所以fopen返回的实际上是null,也就是文件根本没有打开

错误二:fscanf()函数中的第三个参数应该是地址。即可以是a+i,但不能是a[i],因为a[i]表示数组第i个元素的值。可fscanf函数是把文件中读到的数字写进某个地址,本例子中应该是第i个元素的地址吧。

由于你用的都是C的函数,我就用C帮你写一个吧。如下:
#include <stdio.h>
int main()
{
float a;
FILE *stream;
if((stream=fopen("c:\\c.txt","r+"))==NULL)//判断文件是否正确打开
{
fprintf(stderr,"error\n");
}
while(!feof(stream))//判断是否到达文件结束
{
fscanf(stream,"%f",&a);//从文件读数据
printf("%f",a); //打印输出
}
fclose(stream);//关闭文件

}

说明:如果stream指针指向文件结束位置,则feof(stream)返回值为真。

把a[i]改成a+i试试

stream=f