fgetc()等按字节读取文件的函数是咋区分读到的是255还是EOF的?c++/java中bool型变量在内存中占用多少内存
时间:2017-12-28 21:48:02
浏览:次
点击:次
作者:
来源:
立即下载
②⑤⑤和EOF(-①)在存储器中是怎么存储的?这些读取文件的函数是怎么区分读到的是①个实际的字符②⑤⑤还是文件结束标志EOF?(或者说怎么区分④个②⑤⑤(char)和①个EOF(int)?)
---------------------------------
可能是提问的不够好吧,函数是如何得知文件已经读取结束的。
如果把问题想得更极端①点,如果现在是用格式化从文件中读取整数,如何判断读到的是实际的数值还是eof。
原来题主是想知道“系统怎么告诉fgetc”,而不是“fgetc怎么告诉应用程序”。这个问题还真不好回答呢。现代操作系统里的“文件”通常都是抽象的,无论是磁盘上具体的文件,还是①块内存、①整个磁盘区、①整张磁盘、①个网络接口等,都可以视为“①个文件”;不仅如此,磁盘上的文件在不同分区格式上存取方法也不尽相同。
==================
下面的回答偏题了
==================
有个重要细节是,fgetc的返回值是int型的。
int是④个字节的,它的EOF(-①)的补码表示为
①①①①①①①① ①①①①①①①① ①①①①①①①① ①①①①①①①①
而②⑤⑤的补码表示为
⓪⓪⓪⓪⓪⓪⓪⓪ ⓪⓪⓪⓪⓪⓪⓪⓪ ⓪⓪⓪⓪⓪⓪⓪⓪ ①①①①①①①①
是有区别的。
fgetc返回的虽是①个int,但有效的仅为最低的①个字节,而不是所有④个。
用过的centos是①个byte
编译器可以自己定义bool的长度,所以理论上是会有不同的
C++的bool的大小是impl-def,当然所有的实现bool的大小都是①。。
平均评分
0人
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息