有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件中的信息合并(按字母排列),输出到一个新文件C中

#include <stdio.h>
#include <stdlib.h>
void main ()
{
	FILE *fp1,*fp2,*fp3;
	char ch;
	char c[1001];
	int num;  //用于记录字母数目
	int i,j,k;
	fp1=fopen("F:\\learening\\A.txt","r") ;  //以只读方式 打开字母文件
	if(fp1==NULL)
	{
		printf("不能打开文件A\n");
		exit(0);
	 } 
	fp2=fopen("F:\\learening\\B.txt","r") ;  //以只读方式 打开字母文件
	if(fp1==NULL)
	{
		printf("不能打开文件B\n");
		exit(0);
	} 
	
	//将字母文件A读入字符组C中
	ch=fgetc(fp1);
	i=0;
	while(ch!=EOF&&ch!='\n')   //EOF表示文件结尾,对于大多数操作系统而言EOF 为-1,也就是fgetc读到末尾会返回-1
	{
		if(i>1000)  break;
		c[i]=ch;
		i++;
		ch=fgetc(fp1);
	}
	k=i;
	//将字母文件B读入字符组C中
    ch=fgetc(fp2);

	while(ch!=EOF&&ch!='\n')   //EOF表示文件结尾,对于大多数操作系统而言EOF 为-1,也就是fgetc读到末尾会返回-1
	{
		if(i>=1000-k)  break;
		c[i]=ch;
		i++;
		ch=fgetc(fp2);
	}	 
	fclose(fp1);
	fclose(fp2);
	c[i]='\0';  //设置数组c[]的最后一个值
	num=i-1;    //记录字母数目
	printf("A+B:%s\n",c);
    
	//对数组c进行排序,  冒泡排序
	for(i=0;i<=num-1;i++)
	{
		for(j=num;j>i+1;j--)
		{
			if(c[j]<c[j-1])
			{
				ch=c[j];
				c[j]=c[j-1];
				c[j-1]=ch;
			}
		}
	}
	
	printf("C:%s\n",c);
	fp3=fopen("F:\\learening\\c.txt","w");
	if(fp3==NULL)
	{
		printf("不能打开文件C \n");
		exit(0);
	} 
	
	for(i=0;i<=num;i++)
	    fputc(c[i],fp3);
	fclose(fp3);
	
	 
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值