C语言练习题-C语言练习题实例99
题目:有两个磁盘文件 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 文件中的字母已经成功合并并按字母顺序排列。