只知道文件,用C ++清除文件内容

时间:2010-07-15 20:48:44

标签: c++ c file

是否可以在C ++中清除内容(即将EOF设置为开头/重置文件)只知道文件*?我正在写一个带有wb +访问权限的临时文件,并希望有时清除它并截断它而不添加对fclose和fopen的调用。我不认为这是可能的......但如果没有,为什么不呢?

提前致谢!

3 个答案:

答案 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的描述。