c语言 文件合并问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 11:46:00
请高手分析下这个程序哪儿错了
题目:文本文件a1.txt和a2.txt中包含若干从小到大排过序的整数。现要求把两个文件中的数据合起来,仍按从小到大顺序写入文件a3.txt中,是编写相应程序。
我的代码:
#include<stdio.h>
void main()
{FILE *f1,*f2,*f3;
f1=fopen("a1.txt","r");
f2=fopen("a2.txt","r");
f3=fopen("a3.txt","w");
int a,b;

a=getw(f1); /*从a1.txt和a2.txt中分别取最小的数a和b*/
b=getw(f2);
while(!feof(f1)&&!feof(f2)) /*两个文件都没结束时,执行循环、比较*/
{if(a<=b)
{putw(a,f3);
a=getw(f1);}
else
{putw(b,f3);
b=getw(f2);}
}
if(feof(f1)) /*文件a1.txt结束时,把a2.txt中的数全部输入a3.txt*/
{putw(b,f3);
while((b=getw(f2))!=EOF)
putw(b,f3);}
if(feof(f2)) /*同上*/
{putw(a,f3);
while((a=getw(f1))!=EOF)
putw(a,f3);}

fclose(f1);
fclose(f2);
fclose(f3);
printf("已完成!");
}
程序可以运行,但是结果不对。请高手找出其中的错误,或写出合适的代码。多谢!

/*
文本文件a1.txt和a2.txt中包含若干从小到大排过序的整数。
现要求把两个文件中的数据合起来,仍按从小到大顺序写入文件a3.txt中,是编写相应程序。
*/
#include<stdio.h>

void main()
{
FILE *f1,*f2,*f3;
int a,b;
f1=fopen("a1.txt","r");
f2=fopen("a2.txt","r");
f3=fopen("a3.txt","w");

//a=getw(f1);
fscanf(f1,"%d",&a);
//b=getw(f2);
fscanf(f2,"%d",&b);

while(!feof(f1)&&!feof(f2)) //两个文件都没结束时,执行循环、比较
{
if(a<=b){
fprintf(f3,"%d ",a);
fscanf(f1,"%d",&a);
}else{
fprintf(f3,"%d ",b);
fscanf(f2,"%d",&b);
}
}

if(feof(f1)) //文件a1.txt结束时,把a2.txt中的数全部输入a3.txt
{
if(a<=b){
fprintf(f3,"%d ",a);
fprintf(f3,"%d ",b);
}else{
fprintf(f3,"%d ",b);
fprintf(f3,"%d ",a);