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");
}
while(feof())中嵌套fopen为什么会出错?
答案:2 悬赏:40 手机版
解决时间 2021-01-04 11:29
- 提问者网友:凉末
- 2021-01-03 16:12
最佳答案
- 五星知识达人网友:酒者煙囻
- 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的值,所以会死循环。
正确的办法是不要双重循环,只要一重循环!
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
能把错误信息写上来吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯