注册 登录
编程论坛 C语言论坛

分别从两个文件中读取字母,进行排序最后输出到文件(有详细解释)

D2284581470 发布于 2019-12-27 16:52, 2585 次点击
【问题描述】有两个磁盘文件A.txt和B.txt,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C.txt中。
【输入形式】从两个文件读出字符串。
【输出形式】排序合并后输入到另外一个文件。同时在屏幕上输出三个文件的内容。
【样例输入】
文件A.txt内容:djfal45a  fj35afj
文件B.txt内容:fop en
【样例输出】
文件c.txt内容:   3455aaadeffffjjjlnop
以下为屏幕输出的内容:
djfal45a  fj35afj
fop en
   3455aaadeffffjjjlnop
【样例说明】
【评分标准】
拜托各位大神
万分感谢呀
作业马上要截止了
4 回复
#2
D22845814702019-12-27 18:09
这个文件吧,老师不讲还事情多
#3
D22845814702019-12-27 19:47
什么时候,还是要靠自己
程序代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    FILE* p1 = NULL, * p2 = NULL, * fp = NULL;
    char temp;
    int i, j;
    char a[100] = { 0 }, b[100] = {0};
    int count1 = 0, count2 = 0;
    p1 = fopen("A.txt", "r");
    p2 = fopen("B.txt", "r");
    if ((fp = fopen("C.txt", "w")) == NULL)
    {
        printf("打开文件失败\n");
        getchar();
        exit(1);
    }
    for (i = 0;!feof(p1); i++)
    {
        fscanf(p1, "%c", &a[i]);
        count1++;
    }
    for (i = 0;!feof(p2); i++)
    {
        fscanf(p2, "%c", &b[i]);
        count2++;
    }
    strcat(a, b);
    for (i = 0; i < count1 + count2-2; i++)
    {
        for (j = 0; j < count1 + count2 - i - 1-2; j++)
        {
            if (a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    for (i = 0; i < count1 + count2-2; i++)
    {
        printf("%c",a[i]);
    }
    fprintf(fp, "%s\n", a);
    fclose(p1);
    fclose(p2);
    fclose(fp);
    getchar();
    return 0;
}
#4
bcbbcclbbc2019-12-28 15:13
论坛本身就是为了讨论问题,各抒己见,传播知识等等。
作业帖其实不是特别好写,首先要知晓题意,编写代码,之后还需要调试修改。。。挺耗费时间,精力
#5
D22845814702019-12-28 21:07
回复 4楼 bcbbcclbbc
谢谢,一起努力
1