如何获取 FILE* 实例的值?

How I get the value of a FILE* instance?

我正在尝试检查 fopen() returns 的数据。但是我读不出指针指向的数据

#include <stdio.h>

int main( void )
{
    FILE * file = fopen("file.txt");
    printf( "%#llx,\n", (long long) (*file) );
}

使用 gcc,我在编译时遇到此错误:

6:5: error: aggregate value used where an integer was expected
    6 |     printf( "%#llx,\n", (long long) (*file) );
      |     ^~~~~~

clang 抛出

6:37: error: operand of type 'FILE' (aka 'struct _IO_FILE') where arithmetic or pointer type is required
    printf( "%#llx,\n", (long long) (*file) );
                                    ^~~~~~~

那么为什么转换失败,如何解决这个问题?

你不能打印出这样的值。 FILE* 是一个指针。你可以打印出指针指向的地址,但我认为你不想要那样。 指针指向的地址包含类型为 struct _IO_FILE.

的结构

您无法打印结构。但是,您可以查找此结构的声明并打印出结构的成员。如果您想查看此结构的声明,请参阅 this