- 1.链表多面回顾与提高
- 2.文本文件与二进制文件
- 3.文件的缓冲
- 4.FILE与fopen
- 5.fclose
- 6.一次读写一个文件fgetcfputc
- 7.feof的问题和加解密
- 8.什么是换行和fgetsfputs
1.链表多面回顾与提高
2.文本文件与二进制文件
大家都知道计算机的存储,物理上是二进制的
,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的
。
这两者只是在编码层次上有差异。
简单来说,文本文件是基于字符编码的文件
,常见的编码有ASCII编码,二进制文件是基于值编码的文件
。
文本文件:
以ASCII码格式存放,一个字节存放一个字符。
文本文件的每一个字节存放一个ASCI码,代表一个字符。
这便于对字符的逐个处理,但占用存储空间较多,而且要花费时间转换。
二进制文件:
以值(补码)编码格式存放。
二进制文件是把数据以二进制数的格式存放在文件中
的,其占用存储空间较少。
数据按其内存中的存储形式原样存放。
3.文件的缓冲
为什么要有缓冲区( buffer )原因为多种,有两个重点:
- 从内存中读取数据比从文件中读取数据要快得多。
- 对文件的读写需要用到open、read、write等系统底层函数,而用户进程每调用一次系统函数都要从用户态切换到内核态,等执行完毕后再返回用户态,这种切换要花费一定时间成本(对于高并发程序而言,这种状态的切换会影响到程序性能)。