是否可以在C ++中清除内容(即将EOF设置为开头/重置文件)只知道文件*?我正在写一个带有wb +访问权限的临时文件,并希望有时清除它并截断它而不添加对fclose和fopen的调用。我不认为这是可能的......但如果没有,为什么不呢?
提前致谢!
答案 0 :(得分:7)
这取决于您的平台。 POSIX标准提供ftruncate()
,它需要文件描述符,而不是FILE
指针,但它还提供fileno()
以从FILE
指针获取文件描述符。
类似的设施将在Windows环境中提供 - 但名称不同。
答案 1 :(得分:0)
我不相信只使用FILE*
即可完成此操作。您始终可以在文件末尾写入空数据,但不会截断它。
或者,如果您有权访问文件名(我无法从问题中得知),您可以使用freopen
将关闭/打开/截断隐藏到单个函数调用中。
答案 2 :(得分:-1)
#include <cstdio>
freopen(null, "w", filePtr);
请参阅http://www.cplusplus.com/reference/clibrary/cstdio/freopen/了解更多信息。 espacialy是参数filename的描述。