C中的文件是什么?[关闭]

um6iljoc  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(103)

已关闭。此问题为opinion-based。目前不接受回答。
**要改进此问题吗?**更新此问题,以便editing this post可以使用事实和引文来回答。

13天前关闭
Improve this question
在C编程中,FILE是什么?数据类型、预处理器指令还是数据类型?
我运行一个简单的程序,把它当作一个数据类型来查找它的大小,在一个在线编译器中我得到216字节,在turbo C中我得到16字节,这使得它像一个long double数据类型。
对此有什么解释吗?

uttx8gqw

uttx8gqw1#

C标准对FILE的定义如下:

7.23输入/输出 <stdio.h>
7.23.1引言

1头文件<stdio.h>定义了几个宏,并声明了三种类型和许多用于执行输入和输出的函数。
[...]
声明的类型是size_t(在7.21中描述);

FILE

字符串
它是一种对象类型,能够记录控制流所需的所有信息,包括其文件位置指示符,指向其相关缓冲区的指针(如果有的话),记录是否发生读/写错误的错误指示符,以及记录是否到达文件结尾的文件结尾指示符; [...]
所以FILE被定义为<stdio.h>中的一个类型。这个类型可能是在头文件中完全定义的完整类型,也可能是一个不完整的类型,比如typedef struct FILE FILE;。所以它的大小甚至可能无法通过sizeof(FILE)获得,并且在任何情况下,它是实现定义的,并且不能从FILE的值推断出关于其实现的任何东西。FILE可以是标量类型,例如整数类型,指针类型,对于只操作FILE *对象的用户程序来说,这并不重要,无论是默认流stdinstdoutstderr,还是由标准库函数fopen()freopen()tmpfile()等返回的流。
如果您对实现细节感兴趣,请在Internet上查找可用的开源C库,最好是简单的C库,如newlibmusl C库。

相关问题