如何删除C中FILE *指向的文件?

#include int main() { FILE* fp; fp = fopen("temp.txt", "w"); fprintf(fp, "Hello, World!\n"); // remove("temp.txt"); this requires the filename as an argument // removefile(fp); <--- is something like this possible? return 0; } 

remove函数( 在stdio.h中定义 )将文件名作为参数,但不是文件指针本身。

C标准库中是否有一些函数可以删除文件,并将文件指针作为争论?

我不相信有任何方法可以做到这一点,因为FILE *可能根本不一定对应于文件系统中的文件(例如,stdin和stdout)。

在支持硬链接的文件系统中,可能有多个路径引用相同的底层文件,您希望它删除哪一个?

您可能希望使用stdlib中的“FILE * tmpfile(void)”函数。

来自男人:

描述

tmpfile()函数应创建一个临时文件并打开相应的流。 当关闭文件的所有引用时,应自动删除该文件。 该文件在fopen()中打开以进行更新(w +)。

在一些实现中,如果在处理对tmpfile()的调用时调用tmpfile()的进程被终止,则可以留下永久文件。

如果无法打开流,则可能会将错误消息写入标准错误。

不,(不幸的是)没有。

不,你不能。 并且FILE结构中不包含文件名。 因此,最好的选择是使结构既保存指向FILE指针,又保存带有名称的char*

你关闭指针,然后她的值被释放,你怎么想象通过这个句柄删除文件?