用C语言编写一个程序,完成题目要求并保证其在devc++上正常运行。要求:文件合并:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
时间: 2024-04-11 10:33:54 浏览: 105
下面是一个用C语言编写的程序,可以实现题目要求的文件合并功能,并在DevC++上正常运行:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
int main() {
FILE *fileA, *fileB, *fileC;
char lineA[MAX_SIZE], lineB[MAX_SIZE], lineC[MAX_SIZE*2];
int lenA, lenB, lenC;
// 打开文件A
fileA = fopen("fileA.txt", "r");
if (fileA == NULL) {
printf("无法打开文件A!\n");
return 1;
}
// 打开文件B
fileB = fopen("fileB.txt", "r");
if (fileB == NULL) {
printf("无法打开文件B!\n");
fclose(fileA);
return 1;
}
// 创建新文件C
fileC = fopen("fileC.txt", "w");
if (fileC == NULL) {
printf("无法创建文件C!\n");
fclose(fileA);
fclose(fileB);
return 1;
}
// 读取文件A的内容
fgets(lineA, MAX_SIZE, fileA);
lenA = strlen(lineA);
// 读取文件B的内容
fgets(lineB, MAX_SIZE, fileB);
lenB = strlen(lineB);
// 合并两个文件的内容,按字母顺序排列
int 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++];
}
}
// 将剩余未合并的内容添加到新文件C
while (i < lenA) {
lineC[k++] = lineA[i++];
}
while (j < lenB) {
lineC[k++] = lineB[j++];
}
lenC = k;
// 将合并后的内容写入文件C
fwrite(lineC, sizeof(char), lenC, fileC);
printf("文件合并完成!\n");
// 关闭文件
fclose(fileA);
fclose(fileB);
fclose(fileC);
return 0;
}
```
请将上述代码保存为一个名为 `merge_files.c` 的文件,并确保在相同的目录下存在 `fileA.txt` 和 `fileB.txt` 这两个输入文件。然后在DevC++中打开 `merge_files.c` 文件,编译并运行该程序即可实现文件合并的功能。合并后的结果将保存在名为 `fileC.txt` 的新文件中。
阅读全文