首页 > 试题广场 >

有两个磁盘文件“A”和“B”,各存放一行字母,现要求把这两个

[问答题]
有两个磁盘文件“A”和“B”,各存放一行字母,现要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C”中去。
推荐
先分别将A、B文件的内容读出放到数组C中,再对数组C排序。最后将数组内容写到C文件中。N-S图如下所示。

程序如下:
#include<stdio.h>
main()
{
FIlE * fp;
int i,j,n,il;
char c[100],t,ch;
if((fp= fopen("a","r"))= =NULL)
    {
    printf("Can not open the file\n");
    exit(0);
    }
printf("\n file A:\n");
for (i=0;(ch= fgetc(fp))! =EOF;i++ )
    {
    c[i]= ch;
    putchar(c[i]);
    }
fclose(fp);
il=i;
if((fp= fopen("b","r"))= =NULL)
    {printf("\n Can not open the file");
    exit(0);
    }
printf("\n file B:\n");
for (i= il;(ch= fgetc(fp))! =EOF;i++ )
    {
    c[i]=ch;
    putchar(c[i]);
    }
fclose(fp);
n=i;
for (i=0;i<n;i++ )
    for (j=i+1;j<n;j++ )
        if (c[i]>c[j])
            {t=c[i];
            c[i]=c[j];
            c[j]=t;}
printf("\n file C:\n");
fp=fopen("c","w");
    for (i=0;i<N;i++ )
        {putc(c[i],fp);
        putchar(c[i]);
        }
    fclose(fp);
}
运行结果如下:
file A:
I AM A BOY
file B:
I AM A GIRL
file C:
AAAABGIIILMMORY
发表于 2018-08-06 20:07:50 回复(0)
q
发表于 2020-05-12 09:03:53 回复(0)