现在,当我一遍又一遍地使用 write 系统调用时,它只是附加到一个文件,让我们调用 file.txt,如果我要在 C 中调用 sys call write,在 file.txt 上,它会不断地出现。有一种情况,给定同一个文件,我想删除它的所有内容,只添加一行。我该怎么做?我不想创建一个新文件,我想在同一个文件中工作。
谢谢!
行为取决于文件打开的模式:听起来你当前在append
模式下打开;您需要以常规写入方式打开才能获得所需的行为。
传给或传给, , ,或。O_TRUNC
_open()
"w"
"wb"
"w+"
"wb+"
"w+b"
fopen()
只需调用truncate
或ftruncate
将文件剪切为零字节。然后写下你想要的那一行。您不需要关闭或重新打开文件,您可以使用现有的句柄。
当您调用 fopen() 时,您需要将其传递给适当的模式:读取、写入、追加等。这是对fopen()的一个很好的回顾。