我编了一个小程序,可为什么输出的是无限循环,求高手指点,以下是我的程序
#include<stdio.h>#include<stdlib.h>voidmain(){FILE*fp;doublea[20];inti=0;if((fp=fopen...
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fp;
double a[20];
int i=0;
if((fp=fopen("data1.txt","r"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%lf",&a[i]);
printf("a[%d]=%lf\n",i,a[i]);
i++;
}
fclose(fp);
}
这是为什么??
这是我的数据 展开
#include<stdlib.h>
void main()
{
FILE *fp;
double a[20];
int i=0;
if((fp=fopen("data1.txt","r"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
while(!feof(fp))
{
fscanf(fp,"%lf",&a[i]);
printf("a[%d]=%lf\n",i,a[i]);
i++;
}
fclose(fp);
}
这是为什么??
这是我的数据 展开
2个回答
展开全部
feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。
EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。
所以说,当文件有内容时返回0,读取完毕返回非0
你写成
while(feof(fp)==0)
{
}
试试
EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。
所以说,当文件有内容时返回0,读取完毕返回非0
你写成
while(feof(fp)==0)
{
}
试试
更多追问追答
追问
改成while(feof(fp)==0)
{
}或者
while(feof(fp)!=EOF)
{
}
还是一样的结果
追答
换个数据文件不要有其他空格等多余符号,也许你的文件有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询