【C Primer Plus第六版 学习笔记】第十三章 文件输入/输出

有基础,进阶用,个人查漏补缺

  1. 文件:在磁盘或固态硬盘上的一段已命名的存储区。C把文件看作是一系列连续的字节
  2. 所有文件的内容都以二进制形式(0或1)储存。
    1. 文本文件:文件最初使用二进制编码的字符表示文本,其中包含文本内容
    2. 二进制文件:文件中的二进制表示机器语言代码或数值数据或图片或音乐编码,其中包含二进制内容
  3. 为了规范文本文件的处理,C语言提供两种访问文件的途径:二进制模式和文本模式。
    1. 在二进制模式中,程序可以访问文件的每个字节
    2. 在文本模式中,程序所见的内容和文件的实际内容不同,程序会把本地环境表示的行末尾或文件结尾映射为C模式
  4. 文件指针(声明FILE * fp)的类型是指向FILE的指针,FILE是一个定义在stdio.h中的派生类型。fp并不指向实际的文件,而是指向一个包含文件信息的数据对象,其中包含操作文件的IO函数所用的缓冲区信息。
  5. 从文件中读取数据的程序在读到文件结尾时要停止,使用一些输入函数时读到文件结尾会返回一个错误信号EOF或NULL
  6. 标准IO的机理:
    1. 第一步:调用fopen()打开文件,C程序会自动打开3个文件,为标准输入(默认键盘)、标准输出(默认显示屏)和标准错误输出(默认显示屏)
    2. fopen()不仅打开一个文件,还创建了一个缓冲区(在读写模式下会创建两个缓冲区),以及一个包含文件和缓冲区数据的结构,还会返回一个指向该结构的指针
    3. 第二步:调用一个定义在stdio.h中的输入函数,如fscanf()、getc()或fgets()等。一调用这些函数,文件中的数据块就被拷贝到缓冲区中。缓冲区大小一般为512字节或者是其倍数。
    4. 第三步:初始化结构和缓冲区,即设置fp所指向的结构中的值,尤其要设置流中的当前位置和拷贝进缓冲区的字节数。
    5. 第四步:输入函数按要求从缓冲区中读取数据。读取数据时,文件位置指示器被设置为指向刚读取字符的下一个字符。由于stdio.h系列的所有输入函数都使用相同的缓冲区,所以调用任何一个函数都将从上一次函数停止调用的位置开始。
    6. 当输入函数发现已读完缓冲区中的所有字符时。会请求把下一个缓冲大小的数据块从文件拷贝到该缓冲区中。以这种方式,输入函数可以读取文件中的所有内容,直到文件结尾。函数在读取缓冲区中的最后一个字符后,把结尾指示器设置为真。于是,下一次被调用的输入函数将返回EOF
    7. 输出函数以类似的方式把数据写入缓冲区。当缓冲区被填满时,数据将被拷贝到文件中。

你可能感兴趣的:(C语言,c语言,学习,笔记)