对于FILE指针的困惑
请问FILE指针到底指向了什么?
我手头那本垃圾教材里没写明白
按理FILE是一种结构体,结构体指针就指向结构体本身,但是假如这样:
FILE *p
p=fopen(.../*文件的路径和读写方式*/)
那fopen会返回一个指针给p;
p到底指向一个FILE结构还是文件的开始位置?亦或读取的文件本身就是FILE结构
这本教材里还这样说:
“FILE指针”是为了对不同的文件进行区分而为每个文件赋予一个“身份ID”,或者说FILE指针就是一个起着标记文件身份作用的指针“
FILE指针怎么 标记文件身份??
愁死了我那本教材,结构体指针用一页篇幅就讲完了,结构体函数用两页弄了两个特别复杂的实例,也不知道从哪扒下来的。
[解决办法]
fopen()函数调用API,API的实现靠系统调用,系统调用靠内核调用驱动层实现,设备驱动中实现了内核要求的接口,比如对字符设备的读写。如果打开的是普通文件,则是由内核代码来实现对各种文件系统的支持,再结合硬盘的驱动,才能够读写文件。不管是什么平台,只要实现了标准库,为了遵循标准C的规定,层层调用之后最后会返回一个FILE结构体指针,它的成员就包含了一些关于这个文件的信息,例如楼上说的缓冲区,大小等。