用c语言写一个程序,有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。
时间: 2023-11-16 14:03:52 浏览: 164
好的,下面是用 C 语言编写的程序,实现将两个文件中的信息合并(按字母顺序排列),并输出到一个新文件 C 中的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 100
int main() {
FILE *fpA, *fpB, *fpC;
char lineA[MAX_LEN], lineB[MAX_LEN], lineC[MAX_LEN * 2];
int lenA, lenB, lenC, i, j, k;
// 打开文件 A、B、C
fpA = fopen("A.txt", "r");
fpB = fopen("B.txt", "r");
fpC = fopen("C.txt", "w");
if (fpA == NULL || fpB == NULL || fpC == NULL) {
printf("打开文件失败!\n");
exit(1);
}
// 读取文件 A、B 中的内容
fgets(lineA, MAX_LEN, fpA);
fgets(lineB, MAX_LEN, fpB);
lenA = strlen(lineA) - 1; // 去掉换行符
lenB = strlen(lineB) - 1; // 去掉换行符
// 合并两行字符串,并按字母顺序排序
i = 0; j = 0; k = 0;
while (i < lenA && j < lenB) {
if (lineA[i] < lineB[j]) {
lineC[k++] = lineA[i++];
} else {
lineC[k++] = lineB[j++];
}
}
while (i < lenA) {
lineC[k++] = lineA[i++];
}
while (j < lenB) {
lineC[k++] = lineB[j++];
}
lineC[k] = '\0';
// 将合并后的字符串写入文件 C
lenC = strlen(lineC);
for (i = 0; i < lenC; i++) {
fputc(lineC[i], fpC);
}
// 关闭文件
fclose(fpA);
fclose(fpB);
fclose(fpC);
printf("文件合并成功!\n");
return 0;
}
```
程序的思路是先分别读取文件 A 和 B 中的内容,然后将两行字符串合并,并按字母顺序排序,最后将合并后的字符串写入文件 C 中。需要注意的是,在合并字符串时,需要用到三个指针 i、j、k,分别指向字符串 A、B、C 中的当前位置。具体细节见代码注释。
希望这个程序能够帮助到你!
阅读全文