题目:有两个磁盘文件 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 的指针 fa、fb 和 fc,以及两个字符数组 str 和 str1。

然后,我们尝试打开文件 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语言练习题