Back to Blog

FILE *p 是什么类型的指针呢

#file#stream#character#struct#token

结构体成员解释

成员类型含义
levelshort表示缓冲区当前的使用程度,数值越大说明缓冲区越满。
flagsunsigned文件状态标志,例如是否已到达文件末尾、是否出错等。
fdchar实际的文件描述符(在底层系统调用中使用),通常是一个整数句柄。
holdunsigned char用来暂存一个字符,常见于 ungetc 实现。
bsizeshort缓冲区的大小(单位:字节),决定一次 I/O 能读取或写入的最大数据量。
bufferunsigned char *指向分配的缓冲区起始地址。
curpunsigned char *当前读写指针,指向缓冲区中下一个要处理的字节。
istempunsigned标记该文件是否为临时文件(如 tmpfile 创建的文件)。
tokenshort内部使用的令牌,用于区分不同的 I/O 状态。

需要注意的是,这段结构体定义仅用于教学演示,真实的实现往往会更为复杂,且会隐藏在库内部,外部代码只能通过 FILE * 进行操作,而不能直接访问成员。

2)FILE * 的初始化

在使用文件流之前,必须先打开文件并获取对应的 FILE *。最常见的方式是调用 fopen