#include<stdio.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
remove函数(在stdio.h中定义)将文件名作为参数,但不是文件指针本身.
C标准库中是否有一些函数可以删除文件,并将文件指针作为争论?
我不相信有任何方法可以做到这一点,因为FILE*可能根本不一定对应于文件系统中的文件(例如,stdin和stdout).
在支持硬链接的文件系统中,可以有多个路径引用相同的底层文件,您希望它删除哪一个?
您可能希望使用stdlib中的"FILE*tmpfile(void)"函数.
来自男人:
描述
tmpfile()函数应创建一个临时文件并打开相应的流.当关闭文件的所有引用时,应自动删除该文件.该文件在fopen()中打开以进行更新(w +).
在一些实现中,如果在处理对tmpfile()的调用时调用tmpfile()的进程被终止,则可以留下永久文件.
如果无法打开流,则可能会将错误消息写入标准错误.