从两个有序文件中读取数据并有序存到另一个文件中

有两个磁盘文件data1data2,各存放若干整数,并且这些整数是按从小到大的顺序存放的。将这两个文件中的数据合并输出到文件data中,data中的数据要求有序。

假设是文本文件,且文件中的数据是用空格或Tab或回车分隔的(也可考虑是二进制文件)

#include<stdio.h>
#include<stdlib.h>
void main()
{
	FILE *fr1,*fr2,*fw;
	int i1,i2,s1,s2;
	fr1=fopen("data1","r");   /*打开文件data1*/
	fr2=fopen("data2","r");   /*打开文件data2*/
	fw=fopen("data","w");     /*打开文件data*/
	s1=fscanf(fr1,"%d",&i1);  /*从文件data1读第一个数据,不成功返回EOF*/
	s2=fscanf(fr2,"%d",&i2);  /*从文件data2读第一个数据,不成功返回EOF*/
	while(s1!=EOF&&s2!=EOF)   /*文件data1和data2均未结束,循环*/
	{
		if(i1<i2)
		{
			fprintf(fw,"%d ",i1);  /*从文件data1读的数据写入文件data*/
			s1=fscanf(fr1,"%d",&i1); /*从文件data1读下一个数据*/
		}
		else
		{
			fprintf(fw,"%d ",i2);  /*从文件data2读的数据写入文件data*/
			s2=fscanf(fr2,"%d",&i2); /*从文件data2读下一个数据*/
		}
	}
	while(s1!=EOF)  /*文件data1的剩余数据写入文件data*/
	{
		fprintf(fw,"%d ",i1);
		s1=fscanf(fr1,"%d",&i1);
	}
	while(s2!=EOF) /*文件data2的剩余数据写入文件data*/
	{
		fprintf(fw,"%d ",i2);
		s2=fscanf(fr2,"%d",&i2);
	}
	fcloseall();
}

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值