题目:有两个磁盘文件 A 和 B,分别存放着一行字母,要求将这两个文件中的信息合并(按字母顺序排列),然后输出到一个新文件 C 中。

程序分析:在运行这个程序之前,请先创建 A.txt 和 B.txt 两个文件,并在各自的文件中分别存放一行字母。

例如,A.txt 文件内容为:

123

B.txt 文件内容为:

456

实例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    FILE *fa, *fb, *fc;
    int i, j;
    char str[100], str1[100], temp;

    if ((fa = fopen("A.txt", "r")) == NULL)
    {
        printf("error: cannot open A file!\n");
        exit(0);
    }

    fgets(str, 99, fa);
    fclose(fa);

    if ((fb = fopen("B.txt", "r")) == NULL)
    {
        printf("error: cannot open B file!\n");
        exit(0);
    }

    fgets(str1, 100, fb);
    fclose(fb);

    strcat(str, str1);

    for (i = strlen(str) - 1; i > 1; i--)
    {
        for (j = 0; j < i; j++)
        {
            if (str[j] > str[j + 1])
            {
                temp = str[j];
                str[j] = str[j + 1];
                str[j + 1] = temp;
            }
        }
    }

    if ((fc = fopen("C.txt", "w")) == NULL)
    {
        printf("error: cannot open C file!\n");
        exit(0);
    }

    fputs(str, fc);
    fclose(fc);

    system("pause");

    return 0;
}

在这个程序中,我们首先声明了三个指向 FILE 的指针 fafbfc,以及两个字符数组 strstr1

然后,我们尝试打开文件 A.txt。如果文件打开失败,则输出错误信息并退出程序。如果文件打开成功,则使用 fgets() 函数从文件中读取一行字母,并将其存储在 str 数组中。

接下来,我们尝试打开文件 B.txt。如果文件打开失败,则输出错误信息并退出程序。如果文件打开成功,则使用 fgets() 函数从文件中读取一行字母,并将其存储在 str1 数组中。

然后,我们使用 strcat() 函数将 str1 追加到 str 后面,实现合并两个字符串。

接下来,我们使用冒泡排序算法对合并后的字符串进行排序,以实现按字母顺序排列。

然后,我们尝试打开文件 C.txt。如果文件打开失败,则输出错误信息并退出程序。如果文件打开成功,则使用 fputs() 函数将排序后的字符串写入文件中。

最后,我们关闭文件,并使用 system("pause") 函数使程序暂停,以便用户查看输出结果。

运行程序后,将会合并 A.txt 和 B.txt 文件,并按字母顺序排序。然后,将合并后的结果输出到 C.txt 文件中。你可以打开 C.txt 文件查看结果。

例如,运行程序后,打开 C.txt 文件,你会看到以下内容:

123456

这说明 A.txt 和 B.txt 文件中的字母已经成功合并并按字母顺序排列。

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想, c语言练习, c语言练习题