一道简单c语言题,求高人指教!!

编写将两个有序整数文件合并复制一个有序证书文件的程序,嘉定那个证书文件中的整数是从小到大排列的。要求新文件中的整数也是从小到大排列并且互不相同。我的程序:#include... 编写将两个有序整数文件合并复制一个有序证书文件的程序,嘉定那个证书文件中的整数是从小到大排列的。要求新文件中的整数也是从小到大排列并且互不相同。

我的程序:

#include "stdio.h"
void main()
{ FILE *fp1,*fp2,*fp3;
char fname1[40],fname2[40],fname3[40];
int p1,p2,p3,i;
printf("请输入两个源文件名\n");
scanf("%s%s",fname1,fname2);
printf("请输入目标文件名\n");
scanf("%s",fname3);
fp3=fopen(fname3,"wb+");
if ((fp1=fopen(fname1,"rb"))==NULL)
{printf("文件%s打不开!",fname1);
return;}

if ((fp2=fopen(fname2,"rb"))==NULL)
{printf("文件%s打不开!",fname2);
return;}

while(fp1!=NULL||fp2!=NULL)//?
{fscanf(fp1,"%d",&p1);
fscanf(fp2,"%d",&p2);//直接*fp2???
if(fp2==NULL||p1<p2&&fp1!=NULL)//?
{fprintf(fp3,"%d",p1);
fp1++;fp3++;}
else if(p1==p2)
{fprintf(fp3,"%d",p2);
fp1++;fp2++;fp3++;}
else {fprintf(fp3,"%d",p2);
fp2++;fp3++;}
fclose(fp1);
fclose(fp2);
fclose(fp3);
for(i=0;(fp3+i)!=NULL;i++)
printf("%d",*(fp3+i));

}

显示遇到意外的文件结尾是什么意思啊?
展开
 我来答
mengxingxia
2012-06-11 · TA获得超过100个赞
知道答主
回答量:56
采纳率:100%
帮助的人:27.3万
展开全部
fclose(fp3);关闭了文件。printf("%d",*(fp3+i));又访问这个文件,没有问题吗
nydnhs
2012-06-12 · TA获得超过1070个赞
知道小有建树答主
回答量:622
采纳率:0%
帮助的人:518万
展开全部
fp3最后已经关闭了,后面再想写是不行的了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ailouisscott
2014-05-27
知道答主
回答量:1
采纳率:0%
帮助的人:1373
展开全部
之前的说的都不对哦,其实是你的while 只有一个花括号,少一个应该加在第一个fclose前面。

最好括号都换行这样看的比较清楚嘛!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式