用C语言编写一个程序,交替合并两个文件a.txt和b.txt中的行,并将结果写入c.txt中。如果一个文件的行数少于另一个文件,那么大文件中剩余的行数应该简单地复制到c.txt中。
时间: 2024-12-23 09:23:43 浏览: 8
在C语言中,你可以使用`fopen()`、`fgets()`、`fclose()`等函数来操作文件。下面是一个简单的示例程序,它会交替读取两个文件的内容并将其合并到第三个文件中:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINE_LENGTH 100 // 用于存储每行的最大长度
int main() {
FILE *file_a, *file_b, *file_c;
char line_a[MAX_LINE_LENGTH], line_b[MAX_LINE_LENGTH];
int file_a_len, file_b_len;
// 打开文件
if ((file_a = fopen("a.txt", "r")) == NULL) {
perror("Error opening a.txt");
return 1;
}
if ((file_b = fopen("b.txt", "r")) == NULL) {
perror("Error opening b.txt");
fclose(file_a);
return 1;
}
if ((file_c = fopen("c.txt", "w")) == NULL) {
perror("Error creating c.txt");
fclose(file_a);
fclose(file_b);
return 1;
}
// 读取文件行数
fseek(file_a, 0L, SEEK_END); // 将指针移到文件末尾
file_a_len = ftell(file_a); // 获取a.txt的长度
fseek(file_a, 0L, SEEK_SET); // 移回文件开始
file_b_len = ftell(file_b); // 同理获取b.txt的长度
// 逐行读取和交替写入c.txt
while (fgets(line_a, MAX_LINE_LENGTH, file_a) != NULL && fgets(line_b, MAX_LINE_LENGTH, file_b) != NULL) {
fprintf(file_c, "%s\n", line_a);
fprintf(file_c, "%s\n", line_b);
}
// 写入剩余行(如果有的话)
while (fgets(line_a, MAX_LINE_LENGTH, file_a) != NULL) {
fprintf(file_c, "%s\n", line_a);
}
for (int i = 0; i < (file_b_len - file_a_len); i++) { // 如果b.txt有额外行
fgets(line_b, MAX_LINE_LENGTH, file_b);
fprintf(file_c, "%s\n", line_b);
}
// 关闭所有文件
fclose(file_a);
fclose(file_b);
fclose(file_c);
return 0;
}
```
运行这个程序前,请确保a.txt和b.txt文件已经存在且内容正确。
阅读全文