用c语言写,有两个磁盘文件A和B,各存放一行字母今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C中去
时间: 2023-06-24 10:08:29 浏览: 94
以下是一个用C语言实现的将两个文件合并并按字母顺序排序输出到新文件的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 100
int main() {
FILE *fileA, *fileB, *fileC;
char lineA[MAX_LINE_LENGTH], lineB[MAX_LINE_LENGTH], lineC[MAX_LINE_LENGTH*2];
int i = 0, j = 0, k = 0;
// 打开文件A
fileA = fopen("A.txt", "r");
if (fileA == NULL) {
printf("无法打开文件A\n");
exit(1);
}
// 打开文件B
fileB = fopen("B.txt", "r");
if (fileB == NULL) {
printf("无法打开文件B\n");
exit(1);
}
// 创建新文件C
fileC = fopen("C.txt", "w");
if (fileC == NULL) {
printf("无法创建文件C\n");
exit(1);
}
// 读取文件A的内容
if (fgets(lineA, MAX_LINE_LENGTH, fileA) == NULL) {
printf("文件A为空\n");
exit(1);
}
// 读取文件B的内容
if (fgets(lineB, MAX_LINE_LENGTH, fileB) == NULL) {
printf("文件B为空\n");
exit(1);
}
// 合并文件A和文件B的内容并按字母顺序排序
while (lineA[i] != '\0' && lineB[j] != '\0') {
if (lineA[i] < lineB[j]) {
lineC[k++] = lineA[i++];
} else {
lineC[k++] = lineB[j++];
}
}
while (lineA[i] != '\0') {
lineC[k++] = lineA[i++];
}
while (lineB[j] != '\0') {
lineC[k++] = lineB[j++];
}
// 将合并后的内容输出到文件C中
fputs(lineC, fileC);
// 关闭文件
fclose(fileA);
fclose(fileB);
fclose(fileC);
return 0;
}
```
此代码将读取文件A和文件B中的内容,将它们按字母顺序合并,并将结果输出到新文件C中。需要注意的是,此代码假设文件A和文件B中存储的内容都是单行字母。如果文件中存储的内容不是单行字母,那么需要进行相应的修改。
阅读全文