用C语言的read(),write()编写一个程序来实现复制一个文件的内容到另一个文件,且忽略开头带有“#”的内容
时间: 2024-05-09 08:17:56 浏览: 54
题目中给出的代码示例如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define BUFSIZE 512
int main(int argc, char *argv[]) {
int in_file, out_file, n_chars;
char buf[BUFSIZE];
if (argc != 3) {
printf("usage: %s source destination\n", argv[0]);
exit(1);
}
if ((in_file = open(argv[1], O_RDONLY)) == -1) {
printf("Can't open %s\n", argv[1]);
exit(1);
}
if ((out_file = creat(argv[2], 0644)) == -1) {
printf("Can't create %s\n", argv[2]);
exit(1);
}
while ((n_chars = read(in_file, buf, BUFSIZE)) > 0) {
if (write(out_file, buf, n_chars) != n_chars) {
printf("Write error to %s\n", argv[2]);
exit(1);
}
}
if (n_chars == -1) {
printf("Read error from %s\n", argv[1]);
exit(1);
}
if (close(in_file) == -1 || close(out_file) == -1) {
printf("Error closing files\n");
exit(1);
}
return 0;
}
```
程序会检查命令行参数是否为2个,如果不是则输出使用说明并退出程序。打开输入文件和创建输出文件,如果失败则输出错误信息并退出程序。读入输入文件的内容到缓冲区中,然后写入输出文件,直到读完整个文件。如果写操作出现错误则输出错误信息并退出程序。最后关闭输入文件和输出文件,如果出现错误则输出错误信息并退出程序。
该程序可以实现复制一个文件的内容到另一个文件,且忽略开头带有"
阅读全文