【发布时间】:2013-10-18 10:40:27
【问题描述】:
我想复制一个文件,使用 open、read、write 和 lseek 跳过它的前 n 行和最后 m 行
(例如,n = 1,m = 2,源文件:
AAAAAAA
BBBBBB
CCCCCCC
DDDDDDD
目标文件:
BBBBBBB )
我知道如何复制文件,但不知道如何跳过这些行。这是我的复制代码:
char buf[128];
size_t size;
int source = open(argv[1], O_RDONLY);
int dest = open(argv[2], O_CREAT | O_APPEND | O_WRONLY);
if(source == -1) {
printf("error");
return;
}
if(dest == -1) {
printf("error");
return;
}
while((size = read(source, buf, sizeof(buf))) > 0) {
write(dest, buf, size);
}
close(source);
close(dest);
我该如何解决这个问题?
【问题讨论】:
-
如何跳过前N行很明显,不是吗?继续阅读,直到超过 N 个换行符。
-
你为什么在输出文件上使用
O_APPEND?您真的要追加到目标文件的末尾,而不是覆盖它吗? -
是的,我不应该使用 O_APPEND 我的坏