linux里的write是从文件末尾写,如果我想实现覆盖式写(清除原来的内容再写)行不行?

2025-01-04 10:29:17
推荐回答(4个)
回答1:

完全可以,清除可以用写0字符替代,再把文件指针移到开头不就好了,偏移指针可以fseek。

回答2:

如果文件已经存在,并且文件是一个常规文件,而且你打开是是允许写入的, 那就在open文件时加入参数 O_TRUNC就可以了。

回答3:

你说的是APUE上的很经典的一个例子
源代码如下:
#include
#include
#include

#define BUFFSIZE 4096

int main(void)
{
int n;
char buf[BUFFSIZE];
while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
{
if (write(STDOUT_FILENO, buf, n) != n)
{
perror("write error");
exit(1);
}
}
if (n < 0)
{
perror("read error");
exit(1);
}
exit(0);
}

较原来的作了少许改动,这种代码应该能读懂吧。

回答4:

可以的,你可以用重定向的方式