FILE *p 是什么类型的指针呢
#file#stream#character#struct#token
结构体成员解释
| 成员 | 类型 | 含义 |
|---|---|---|
level | short | 表示缓冲区当前的使用程度,数值越大说明缓冲区越满。 |
flags | unsigned | 文件状态标志,例如是否已到达文件末尾、是否出错等。 |
fd | char | 实际的文件描述符(在底层系统调用中使用),通常是一个整数句柄。 |
hold | unsigned char | 用来暂存一个字符,常见于 ungetc 实现。 |
bsize | short | 缓冲区的大小(单位:字节),决定一次 I/O 能读取或写入的最大数据量。 |
buffer | unsigned char * | 指向分配的缓冲区起始地址。 |
curp | unsigned char * | 当前读写指针,指向缓冲区中下一个要处理的字节。 |
istemp | unsigned | 标记该文件是否为临时文件(如 tmpfile 创建的文件)。 |
token | short | 内部使用的令牌,用于区分不同的 I/O 状态。 |
需要注意的是,这段结构体定义仅用于教学演示,真实的实现往往会更为复杂,且会隐藏在库内部,外部代码只能通过 FILE * 进行操作,而不能直接访问成员。
2)FILE * 的初始化
在使用文件流之前,必须先打开文件并获取对应的 FILE *。最常见的方式是调用 fopen: