C语言合并两个文件的信息并写入到新文件中

题目

在这里插入图片描述

解答
	#include<stdio.h>
	#include<string.h>
	
	//从文件A和文件B中读取字符
	void read(FILE *in,char buff[]){
		int i=0;
		char c;
		//读文件A
		if(in=fopen("D:\\A.txt","r")){ //r 打开一个已有的文本文件,允许读取文件。
			while(!feof(in)) { //feof函数 文件结束:返回非0值(EOF),文件未结束,返回0值
				c = fgetc(in);
				if(c!='\n'&&c!=' '&&c!=EOF){ //只保存一行的字母,不保存空格(EOF是文件结束标志)
					buff[i++]=c;
				}
			}
			fclose(in);   //关闭文件流
		}
		else{
			printf("无法打开文件\n");
		}
		//读文件B
		if(in=fopen("D:\\B.txt","r")){ 
			while(!feof(in))  {
				c = fgetc(in);
				if(c!='\n'&&c!=' '&&c!=EOF){ 
					buff[i++]=c;
				}
			}
			buff[i]='\0'; 
			fclose(in);   
		}
		else{
			printf("无法打开文件\n");
		}
	}
	
	//将结果写入新文件
	void storage(FILE *out,char buff[]){
		int i;
		if(out=fopen("D:\\C.txt","w")){ //w 打开一个文本文件,允许写入文件。如果文件不存在,则会创建一个新文件;如果文件存在,则该会被截断为零长度,重新写入。
			/*for(i=0;buff[i]!='\0';i++)
				fputc(buff[i],out);*/
			fwrite(buff,strlen(buff),1,out); //也可以调用fwrite函数来写文件
			printf("写入成功\n");
			fclose(out);
		}else{
			printf("无法打开文件\n");
		}
	}
	
	//快速排序
	void QSort(char buff[],int low,int high){
		int i,j,tmp;
		i=low,j=high;
		if(i<j){
			tmp=buff[i];
			while(i<j){ //i与j指向同一个位置时退出
				while(i<j&&buff[j]>=tmp)
					j--;
				buff[i]=buff[j];
				while(i<j&&buff[i]<=tmp)
					i++;
				buff[j]=buff[i];
			}
			buff[i]=tmp;
			QSort(buff,low,i-1);
			QSort(buff,i+1,high);
		}
	}
	
	void main(){
		FILE *in=NULL,*out=NULL;  //将两个文件指针初始化为空,in用来读文件,out用来写文件
		char buff[255];
		int len;
		read(in,buff);       //通过文件获取信息
		len=strlen(buff);    //获取字符数组的长度
		QSort(buff,0,len-1); //对合并结果进行升序排序
		storage(out,buff);   //将排好序的结果保存到文件C中
	}
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值