永发信息网

while(feof())中嵌套fopen为什么会出错?

答案:2  悬赏:40  手机版
解决时间 2021-01-04 11:29
  • 提问者网友:凉末
  • 2021-01-03 16:12
FILE *pFile_COOL=fopen("123.avi","rb");//以读的方式打开文件。
while (!feof(pFile_COOL))
{
int len = fread(FileContent,1,len_COOL,pFile_COOL);

FILE *pFile = fopen("0.bmp","wb");

}
最佳答案
  • 五星知识达人网友:酒者煙囻
  • 2021-01-22 07:27
错误不是你说的那里,while(!feof(inf))是对的,关键的错误在下面:
fscanf(inf,"%d",&x);
while(x!=0)
{p=malloc(sizeof(struct item));
p->val=x;
p->next=list;
list=p;
fscanf(inf,"%d",&x);
}
注意看前面两行:
fscanf(inf,"%d",&x);
while(x!=0)
你是以为当文件内容被读完的时候,x就会为0,就能停止循环,这是错误的!

当文件内容被读完的时候,比如你的1234567890,只是一个整数,一次就被读出了(当然读出的结果不是这么多,溢出了,那是另外的问题),下一次来fscanf的时候会失败,但是失败的fscanf不改变x的值,所以会死循环。

正确的办法是不要双重循环,只要一重循环!
全部回答
  • 1楼网友:第幾種人
  • 2021-01-22 07:36
能把错误信息写上来吗?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯