在 C 中创建自己的 FILE* 指针?

标签 c pointers filesystems

我刚刚查看了 stdio.h,我可以在其中找到 FILE 结构 定义:

typedef struct  {
   int             level;      /* fill/empty level of buffer */
   unsigned        flags;      /* File status flags          */
   char            fd;         /* File descriptor            */
   unsigned char   hold;       /* Ungetc char if no buffer   */
   int             bsize;      /* Buffer size                */
   unsigned char   *buffer;    /* Data transfer buffer       */
   unsigned char   *curp;      /* Current active pointer     */
   unsigned        istemp;     /* Temporary file indicator   */
   short           token;      /* Used for validity checking */
} FILE; 

现在,我想知道我是否可以为自己创建(不使用 fopen)一个有效的 FILE 指针 到我可以在随后的 fread 或 fwrite 调用中使用的流?这是 更多的是一个理论问题,所以请不要奇怪我为什么想知道那个;)

此外,stdio 不提供删除文件的例程是否正确?在 这种情况下我需要操作系统调用,不是吗?

谢谢

最佳答案

不,您甚至不应该尝试这样做,因为它不可移植。 C99 规范说您甚至不应该尝试复制现有的 FILE 对象,因为它的地址“可能很重要”。

stdio 提供了remove() 函数来删除一个文件。

关于在 C 中创建自己的 FILE* 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372472/

相关文章:

c - 非常简单的错误;我可能忘记了分号

c - 计算超过 1 个字节的 CRC16 MCRF4XX 时出现问题

c - fwrite 查找到文件末尾后写入文件末尾

c++ - C++中未定义的结构类型

c - 在 C 语言中,如何使用 printf() 函数将字符串设为 'store'?

c - C语言中,如何用指针计算一个字符串中有多少个元音字母?

c - C中双向链表的初始化,指针

python - 在 Python 中,如何检查文件是否存在以子字符串开头或结尾?

filesystems - 在文件系统中存储上传文件的最佳实践

c++ - Windows 下使用 C/C++ 的虚拟文件系统