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

Laz*_*zer 5 c file-io

#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标准库中是否有一些函数可以删除文件,并将文件指针作为争论?

Dav*_*har 7

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

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


vrd*_*dhn 7

您可能希望使用stdlib中的"FILE*tmpfile(void)"函数.

来自男人:

描述

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

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

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


Bar*_*nau 1

不,没有(不幸的是)。