在文件“A”和“B”中分别写入一行字母,将两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C”中去。
1.定义相关变量
char stra[N1],strb[N2],strc[N3]={"\0"};//定义3个字符数组,用于存放字符串
char c;//定义字符变量c,用于字母交换
int i,j,k; //定义整型变量i,j,k用于循环
FILE *fp1,*fp2,*fp3;//定义3个文件指针,分别指向3个文件信息区
2.打开文件“A”和“B”,分别写入字母
if((fp1=fopen("A","w"))==NULL)//打开文件A,写
{
printf("无法打开文件!\n");
exit(0); //终止程序
}
gets(stra);//从键盘输入字符串
fputs(stra,fp1);//将字符串写入文件A
fclose(fp1);//关闭文件
if((fp2=fopen("B","w"))==NULL)//打开文件B,写
{
printf("无法打开文件!\n");
exit(0); //终止程序
}
gets(strb);//从键盘输入字符串
fputs(strb,fp2);//将字符串写入文件B
fclose(fp2);//关闭文件
3.打开文件“A”和“B”,读取字母存入新的字符数组中
if((fp1=fopen("A","r"))==NULL)//打开文件A,读
{
printf("无法打开文件!\n");
exit(0); //终止程序
}
strcat(strc,fgets(stra,N1,fp1));//从文件A中读取字符串,存入字符数组strc
fclose(fp1);//关闭文件
if((fp2=fopen("B","r"))==NULL)//打开文件B,读
{
printf("无法打开文件!\n");
exit(0); //终止程序
}
strcat(strc,fgets(strb,N2,fp2));//从文件B中读取字符串,存入字符数组strc
fclose(fp2);//关闭文件
4.对字符数组中的字母排序(选择法)
for(i=0;strc[i]!='\0';i++)//选择法对字母排序
{
k=i;
for(j=i+1;strc[j]!='\0';j++)
{
if(strc[k]>strc[j])
k=j;
}
if(i!=k)
{
c=strc[i];
strc[i]=strc[k];
strc[k]=c;
}
}
5.将排好序的字符数组写入文件“C”
if((fp3=fopen("C","w"))==NULL)//打开文件C,写
{
printf("无法打开文件!\n");
exit(0); //终止程序
}
fputs(strc,fp3);//将字符串写入文件C
fclose(fp3);//关闭文件
6.程序运行结果
从键盘写入两行字母分别写入文件“A”和“B”
文件“A”和“B”中的内容
文件“C”中的内容