如何覆盖文本文件?

Val*_*arz 1 c unix printf fopen

我正在 Unix 上编码。我有一个文本文件作为输出。如何在每次调用函数时覆盖内容?

例子:

functionA(){
    fp = fopen("text.txt",someflag);
    ...
    ...blabla
    ....
    fprintf(fp,"some new text");
}
Run Code Online (Sandbox Code Playgroud)

因此,通过调用functionA,我应该拥有包含新内容的 text.txt 。

对于someflag,我已经尝试过aab、 和w+,但都没有达到我想要的结果。(ab追加新文本,w+打开文件,但fprintf不起作用)。我在unix上使用C语言。

Tim*_*Tim 5

标志"w"应该覆盖现有文件。

有关详细信息,请参阅此文档,具体来说:

mode 参数指向一个字符串。如果字符串是以下之一,则文件应以指定的模式打开。否则,行为是未定义的。

  • r 或 rb:打开文件进行读取。
  • w 或 wb:截断至零长度或创建用于写入的文件。
  • a 或 ab:追加;打开或创建文件以在文件末尾写入。
  • r+ 或 rb+ 或 r+b:打开文件进行更新(读取和写入)。
  • w+ 或 wb+ 或 w+b:截断至零长度或创建文件以进行更新。
  • a+ 或 ab+ 或 a+b:追加;打开或创建文件进行更新,在文件末尾写入。