写出一个基于linux文件IO的源文件,实现文件按行复制
时间: 2024-10-11 17:10:30 浏览: 28
在Linux环境下,我们可以使用C语言编写一个简单的程序来实现文件按行复制。下面是一个基本的例子,这个程序会打开源文件和目标文件,逐行读取源文件并写入到目标文件中:
```c
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 4096
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s source_file destination_file\n", argv[0]);
return 1;
}
FILE *src = fopen(argv[1], "r");
FILE *dst = fopen(argv[2], "w");
if (src == NULL || dst == NULL) {
perror("Error opening files");
return 1;
}
char buffer[BUFFER_SIZE];
size_t len;
while ((len = fread(buffer, 1, BUFFER_SIZE, src)) > 0) {
// 文件内容是以换行符'\n'结束的每一行,所以我们只对非换行符的部分操作
fwrite(buffer, 1, len - 1, dst);
fwrite("\n", 1, 1, dst); // 每次写入一行后追加一个换行符
}
fclose(src);
fclose(dst);
if (ferror(src) || ferror(dst)) {
perror("Error reading or writing to file");
return 1;
}
printf("File copied successfully.\n");
return 0;
}
```
在这个程序中,首先检查命令行参数是否正确,然后分别打开源文件和目标文件。接着使用`fread`从源文件逐块读取数据,并在每次读取后将数据(去掉最后一个字符通常是换行符)写入目标文件,同时添加新的换行符。最后关闭文件并检查是否有错误。
阅读全文