gpt4 book ai didi

c - 在用 fopen 打开的文件上执行 ftruncate

转载 作者:太空狗 更新时间:2023-10-29 11:29:53 25 4
gpt4 key购买 nike

平台是 ARM 上的 Ubuntu Linux。我想将一个字符串写入文件,但我希望每次都截断文件然后写入字符串,即不追加。

我有这个代码:

f=fopen("/home/user1/refresh.txt","w");
fputs( "{"some string",f);
fflush(f);
ftruncate(fileno(f),(off_t)0);
flcose(f);

如果我运行它然后检查文件,它的长度将为零,打开时,里面什么也没有。如果我删除 fflush 调用,它不会是 0(将是 11),当我打开它时,里面会有“一些字符串”。这是正常行为吗?我调用 fflush 没有问题,但我想在循环中执行此操作,调用 fflush 可能会大大增加执行时间。

最佳答案

你真的不应该像那样混合调用文件句柄和文件描述符。

如果没有 fflush,几乎可以肯定会发生的是 some string 在文件句柄缓冲区中等待传递到文件描述符。然后截断文件描述符并 fclose 文件句柄,刷新字符串,因此它显示在文件中。

通过 fflush,一些字符串 被发送到文件描述符,然后您截断它。没有进一步刷新,文件保持截断状态。

关于c - 在用 fopen 打开的文件上执行 ftruncate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13494417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com