C语言 文件操作

        什么时文件       

文件用于保存数据,可以做到数据持久化的保存

        磁盘上的文件就是文件

但是在程序设计中,文件一般分为两种,程序文件和数据文件

        程序文件

包括源程序文件(.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)

       文件的随机读写

        fseek

        根据文件指针的位置和偏移量来定位文件指针

int fseek (FILE * stream, long int offset,int origin);

        分别对应 起始位置 当前位置 文件末尾 

         ftell

        返回文件指针相对于起始位置的偏移量        

long int ftell(FILE * stream);

        rewind 

        让文件指针的位置回到文件的起始位置

void rewind(FILE * stream);

特殊指令

        feof

        feof无法用返回值判断文件是否结束,它用于当文件结束时候,判断是读取结束的原因是否是遇到文件结尾结束

        1.文本文件是否结束时EOF(fgetc)和NULL(fgets)

        2.二进制文件的读取结束判断,判断返回值是否小于实际要读的个数

        

         

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值