文件用于保存数据,可以做到数据持久化的保存
但是在程序设计中,文件一般分为两种,程序文件和数据文件
包括源程序文件(.c),目标文件(.obj)可执行文件(.exe)
文件内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件.
? ? ? ? 一个文件要有唯一的文件标识,方便用户识别和引用
? ? ? ? 文件包括 路径+名字+后缀
? ? ? ? 例如 C;\a\a.txt
? ? ? ? 文件标识一般称为文件名
? ? ? ? 根据数据的组织形式,数据文件分为文本文件和二进制文件
? ? ? ? 如果以二进制的形式储存的文件,就是二进制文件
? ? ? ? 如果是以ASCLL码的形式存储文件,需要在存储前转换,使用时转换,那么这样的文件就是文本文件.
? ? ? ? 数据在文件中,字符用ASCLL形式存储,数值型的数据可以用ASCLL存储也可以用二进制形式储存. 例如10000的存储
? ? ? ? 而且VS上也可以打开二进制文件
????????程序的数据需要输出到各种外部设备,也需要从外部设备获取数据,不同的外部设备的输?输出操作各不相同,为了?便程序员对各种设备进??便的操作,我们抽象出了流的概念,我们可以把流想象成流淌着字符的河。 C程序针对?件、画?、键盘等的数据输?输出操作都是通过流操作的。 ?般情况下,我们要想向流?写数据,或者从流中读取数据,都是要打开流,然后操作。
? ? ? ? C语言程序在启动的时候,默认打开 stdin stdout stderr三个流,分别是标准输入流,标准输流,?标准错误流.
? ? ? ? stdin,由键盘输入 scanf就是从标准输入流读取数据
? ? ? ? stdout标准输出流,大多数的环境中输出给显示器,printf就是输出
? ? ? ? stderr输出到显示器
? ? ? ? 它们都是 file* 文件指针
? ? ? ? 缓冲文件系统中,关键的概念是"文件类型指针",简称"文件指针"
? ? ? ? 每个被使用的文件都在内存中开辟了了一个文件信息区,用来存放文件的相关信息(文件的名字,文件的状态,和文件当前的位置).这些信息都存放在一个结构体变量中,由系统声明,取名为FILE
FILE *pf;
?pf是指向FILE类型数据的指针变量,可以使pf指向某个文件的文件信息去(结构体变量).通过文件信息去的信息来范围跟文件,也就通过文件指针变量就能找到与它关联的文件.
? ? ? ? 先打开再关闭?,打开文件的时候会返回一个FILE*类型的指针变量,相当于建立了指针和文件的关系
? ? ? ? fopen函数打开文件 fclose用来关闭文件
void rewind (FILE* stream)
? ? ? ? 根据文件指针的位置和偏移量来定位文件指针
int fseek (FILE * stream, long int offset,int origin);
? ? ? ? 分别对应 起始位置 当前位置 文件末尾?
? ? ? ? 返回文件指针相对于起始位置的偏移量????????
long int ftell(FILE * stream);
? ? ? ? 让文件指针的位置回到文件的起始位置
void rewind(FILE * stream);
? ? ? ? feof
? ? ? ? feof无法用返回值判断文件是否结束,它用于当文件结束时候,判断是读取结束的原因是否是遇到文件结尾结束
? ? ? ? 1.文本文件是否结束时EOF(fgetc)和NULL(fgets)
? ? ? ? 2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数