问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言文件合并中,文件末尾的问题,求大神解答

发布网友 发布时间:2022-05-12 16:30

我来回答

2个回答

热心网友 时间:2023-08-03 13:28

#include<stdio.h>
#include<stdlib.h>
main()
{
FILE*f1,*f2,*f;
f1=fopen("E:\\bc\\1.txt","r");
f2=fopen("E:\\bc\\2.txt","r");
f=fopen("E:\\bc\\3.txt","w");
int x,y,m=0;
while(!feof(f1)&&!feof(f2)) //改为while(x!=-1&&y!=-1)时是个死循环
{
if(m==0)
{
fscanf(f1,"%d",&x);
fscanf(f2,"%d",&y);
m=1;
continue;
}
if(x<y)
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
fscanf(f1,"%d",&x);
}
else
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
fscanf(f2,"%d",&y);
}
}
while(!feof(f1))
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
fscanf(f1,"%d",&x);
}
while(!feof(f2))
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
fscanf(f2,"%d",&y);
}
fclose(f1);
fclose(f2);
fclose(f);
return 0;
}追问谢谢

热心网友 时间:2023-08-03 13:28

你的问题在于到达文件结尾的时候while退出,这时候x和y中都还保存着所在文件的最后一个值。但是你写文件的操作也是在while中进行的,所以这个最后的值就没法再写进去了,只需要在最后增加进去。
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE*f1,*f2,*f;
f1=fopen("E:\\bc\\1.txt","r");
f2=fopen("E:\\bc\\2.txt","r");
f=fopen("E:\\bc\\3.txt","w");
int x,y,m=0;
int flag_x = 0;
int flag_y = 0;

while(!feof(f1)&&!feof(f2)) //改为while(x!=-1&&y!=-1)时是个死循环
{
if(m==0)
{
fscanf(f1,"%d",&x);
fscanf(f2,"%d",&y);
m=1;
}
if(x<y)
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
fscanf(f1,"%d",&x);
}
else
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
fscanf(f2,"%d",&y);
}
}
while(!feof(f1))
{
//这里还是要增加一个x和y的判断的,因为作为全局变量,y里仍然是有值的。
if(x<y)
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
fscanf(f1,"%d",&x);
}
else
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
fscanf(f2,"%d",&y);
flag_y = 1;
}
}
while(!feof(f2))
{
if(x<y)
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
fscanf(f1,"%d",&x);
flag_x = 1;
}
else
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
fscanf(f2,"%d",&y);
}
}
if(x && y)
{
if(x<y)
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
}
else
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
}
}
else
{
if(flag_x == 0)
{
fprintf(f,"%d",x);
fprintf(f,"%c",' ');
}
if(flag_y == 0)
{
fprintf(f,"%d",y);
fprintf(f,"%c",' ');
}
}
fclose(f1);
fclose(f2);
fclose(f);
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? C语言 文件操作 如何末尾追加内容? 如何将文本文件的超长数字在EXCEL中成功转换,尾数不会出现0的? 怎么写个能修改TXT文件实现在每行末尾加一个“|”的bat文件? win10搜索电脑里的文件时文件编号编号如果尾数是零为什么就搜不到呢 excel表格数字尾数变000 我知道改成文本 然后在输入 太多了身份证号需要 在Word文档中如何对尾数操作才有效? 如何重命名末尾有.的文件 microsoft文件怎么改尾数挨着编号 锤子手机的NFC能用吗? 坚果pro2是不是杂牌手机 什么补水保湿产品好 请问大家都在用什么护肤产品呢? sukin温和洁面乳怎么样 求对比清洁面膜 苏芊的有效期,怎样简单看懂? 澳洲本土好用的面膜,你知道么 澳洲品牌sukin怎么样? 九分运动裤男怎么搭配 男生黑色卷边九分裤配什么鞋 九分裤适合多高的人穿? 如何用vc在文件末尾写入数据? 头皮如何抗衰老?头皮养护方法有哪些? 表格单价不变,总金额不变,尾数0.01怎么改 头皮如何抗衰老 正确地养护头发是很重要的,怎样做? 发际线高怎么改善,掉发严重什么原因? 怎样用一句话安慰失恋的人 掉头发严重是啥原因? 怎么样可以让受损的头发变好 谁能跟我说说,在染发之前擦点什么东西能保护头皮,减少对头皮的... 头皮松弛怎么回事 人鱼色口红是什么颜色 人鱼色口红适合什么人 拓扑优化为啥是空的 mac口红哪个颜色最火 mac口红好看的颜色 双椒子姜嫩兔的做法,双椒子姜嫩兔怎么做好吃 书妤谐音的英文名可以怎么取? 人鱼色碧玺值钱吗 白书妤是哪篇小说的女主人翁? 求一篇女主叫做谢书妤的古风短篇小说 谢谢您的鼓励作文五百字