目录
一.文件
1.文件概念
2.文本模式和二进制模式
(1)模式结尾映射
(2)存储精度
3.I/O级别
一.文件
1.文件概念
文件:在磁盘或固态硬盘上一段已命名的存储区。对于C来说,文件就是一系列连续的字节,每个字节都能被单独读取(在计算机当中,所有的数据都是以二进制进行存储的)。而针对文件的操作,又分为文本模式,二进制模式
2.文本模式和二进制模式
文本模式:将所有的二进制代码最终用字符的形式展现出来。可以访问文件的每个字节。
二进制模式:将所有的二进制代码最终用机器语言代码或数值数据表现出来。程序所看见的内容和文件实际内容不同。
(1)模式结尾映射
这是因为在不同系统当中都会把本地环境的行末尾或文件结尾映射为C模式。
比如MS-DOS平台,读取文件把文件结尾 \r\n转换为\n。写入文件时把\n转换为\r\n。而二进制模式\r\n还是\r\n。
(2)存储精度
二进制模式在保存数值类型的时候可以保留精度不变,因为它把数对应的二进制数值全部保存。而文本因为都是以字符保存的,所以一个字符只会用一个字节进行保存,而想int,float数值可保存的字节可远远高于一个字节。
举个例子文本模式和二进制模式分别存储32
文本模式(字符):只会保存3和2这两个字符。一个字符占用一个字节,所以文件存储的二进制为
0011 0011 0011 0010
0011 0011('3'的ASCII码)
0011 0010('2'的ASCII码)
二进制模式(数值):保存32对应的int二进制数值,也就是四个字节.所以文件存储的二进制为
0000 0000 0000 0000 0000 0000 0010 0000。(高<-低)
这些函数后面会讲,这里主要看下红色部分,我们分别把32以文本模式和二进制模式存储。最后我们在以此取一个字节大小进行打印,文本模式很正常打印3(ASCII码51)。而二进制模式把32直接打印空格(ASCII码32)
而其实二进制文件和文本文件在处理整数和字符的时候基本都一样。只有在处理浮点数的时候会产生精度影响
这里我们分别把浮点数存入二进制文件和文本文件。但文本文件因为读取的字符,其实值读取33.333333。而浮点数其实小数点后还有数字,但文本文件后面的就不会存储了。而二进制会把这个double类型的浮点数的所有二进制全部存入。最后打印,我们也可以看出来。同样的double类型数值,最后打印的精度明显差很多。
3.I/O级别
在我们处理文件的时候,一般可以选择两种I/O。
底层I/O:系统自带的,比如linux,你可以使用cat 文件。来打开查看文件的内容
标准高级I/O:C语言自带的I/O。比如fopen,可以打开文件
与底层I/O一个系统一个样相比,标准高级I/O让你在所有系统都用一套相同的函数。可移植性是很高的。除此标准高级I/O还有两个好处
第一,标准高级I/O有许多专门的函数简化了处理不同的I/O问题。
第二,输入和输出都是缓冲的,也就是说,一次转换一大块信息而不是一字节信息。
输出函数则以类似的方式把数据写入缓冲区。当缓冲区被填满时,数据将被拷贝至文件中。
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈