C语言文件操作

目录

文件指针

文件的打开和关闭

文件路径:

相对路径

绝对路径

文件的顺序读写

所有输出流:

fputc:

fgetc:

fputs:

fgets:

fprintf:

fscanf:

fwrite:

fread:

sprintf:

sscanf:

对比:

文件的随机读写

fseek:​

ftell:

rewind:

文件读取结束的判定

被错误使用的feof:

判断文件读取结束:

判断是什么原因结束的:


程序文件:.h  .c   .obj   .exe

数据文件:.txt(写、读)

把文件从内存写入硬盘上:输出操作(以内存角度来看)

从硬盘上读文件:输入操作

文件指针

使用函数fopen函数打开文件后,就会有生成一个文件信息区(FILE类型的结构体),系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,用一个文件指针FILE*返回这个文件信息区的地址

一般都是通过一个FILE的指针来维护这个FILE结构的变量

文件的打开和关闭

fopen(文件名,打开方式)

文件路径:

注意文件拓展名的显示

相对路径

. 表示当前路径

. . 表示上一级路径

当前路径:

上一级路径:

上一级路径的上一级路径:

绝对路径

文件的顺序读写

所有输出流:

分为文件流和标准输出流,以下下代码都是实现文件流的

此处为标准输出流:

流是一个高度抽象的概念,相当于中转站,数据写入流,然后转到外部设备。

在写文件的时候,在需要的时候打开、关闭文件

而scanf 从键盘上读取数据、printf 向屏幕打印数据 直接可以操作,是因为C语言程序只要运行起来就默认打开了三个流:(类型都是FILE*的指针)

1、标准输入流 —— stdin

2、标准输出流 —— stdout

3、标准错误流 —— stderr

fputc:

返回的是ASCII码值

每一次写入字符后,一个标记文件指针状态的指针(不是pf,pf不动)就会往后一位,以方便写入下一个字符

fgetc:

正常的话返回字符的ASCII码值,否则返回EOF

改进:

fputs:

fgets:

num:最多读num-1个,但是遇到换行符就停止

一组语句处理一行

fprintf:

fscanf:

fwrite:

以二进制的方式写进去的

fread:

以二进制的方式读

fread要求读取count个大小为size字节的数据

如果真的读到count个数据,函数返回count

如果没有读到count个数据,函数返回真实读取到的数据个数

sprintf:

把格式化的数据转换成字符串

sscanf:

对比:

scanf / fscanf / sscanf

printf / fprintf / sprintf

第一组:是针对标准输入、输出流的格式化输入、输出函数

第二组:是针对所有输入、输出流(文件流、标准输入、输出流)的格式化输入、输出函数

第三组:sscanf:将字符串转换成格式化的数据

               sprintf:将格式化的数据转换成字符串

文件的随机读写

fseek:

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

fseek(流,偏移量,起始位置)

有三个选择:文件起始位置、文件当前位置、文件偏移量

ftell:

当前光标所在位置相对于起始位置的偏移量

rewind:

rewind(pf)回到起始位置

文件读取结束的判定

被错误使用的feof:

在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束

而是应用于当文件已经读取结束的时候,判断是读取失败结束,还是遇到文件尾结束

判断文件读取结束:

1、文本文件的读取结束判断

        使用fgetc,判断返回值是否为EOF

        使用fgets,判断返回值是否为NULL

2、二进制文件读取结束判断

        使用fread,判断返回值是否小于函数写入的实际要读的个数

判断是什么原因结束的:

ferror:在文件读取结束后,用来判断文件是否因为读取过程中遇到错误而结束,如果遇到错误会返回一个非0的值

feof:在文件读取结束后,用来判断文件是否因为读取过程中遇到文件末尾而结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值