文件用于保存数据,可以做到数据持久化的保存
但是在程序设计中,文件一般分为两种,程序文件和数据文件
包括源程序文件(.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.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数