// 文件合并排序输出.cpp : Defines the entry point for the console application.
//
//
// ╭︿︿︿╮
// {/ o o /}
// ( (oo) )
// ︶ ︶︶
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
void Combine(FILE *fpA,FILE *fpB)
{
char ch;
while(!feof(fpA))
{
ch=fgetc(fpA);
fputc(ch,fpB);
}
}
//排序并存储在新文件
void file_sort(FILE *fp,char *filenameB)
{
int n=0,temp;
char ch[100];
if((fp=fopen(filenameB,"r"))==NULL)
{
printf("Can't find the fileB!\n");
exit(0);
}
while(!feof(fp))
{
ch[n]=fgetc(fp);
n++;
}//拷贝文件数据到数组ch中
for(int i=0;i<=n;i++)
for(int j=0;j<=n-i;j++)
{
if(ch[j]=='\0')
break;
if(ch[j]<ch[j+1])
{
temp=ch[j];
ch[j]=ch[j+1];
ch[j+1]=temp;
}
}//利用数组和冒泡排序实现按字母表排序
FILE *fpC;
printf("save the file: ");
char filenameC[10];
scanf("%s",filenameC);
if((fpC=fopen(filenameC,"w"))==NULL)
{
printf("Can't find the fileC!\n");
exit(0);
}
for(int L=0;L<n;L++)
fputc(ch[L],fpC);//将已排序的数组ch重新写入新文件中
fclose(fp);
fclose(fpC);
}
int main(int argc, char* argv[])
{
FILE *fpA,*fpB;
char filenameA[10],filenameB[10];
printf("Enter file's name A: ");
scanf("%s",filenameA);
if((fpA=fopen(filenameA,"r"))==NULL)
{
printf("Can't find the fileA!\n");
exit(0);
}
printf("Enter file's name B: ");
scanf("%s",filenameB);
if((fpB=fopen(filenameB,"a"))==NULL)
{
printf("Can't find the fileB!\n");
exit(0);
}
Combine(fpA,fpB);
fclose(fpA);
//fclose(fpB);//是否可以暂时脱钩,以再次打开的方式覆盖这一行为?
file_sort(fpB,filenameB);
return 0;
}