C语言中的文件操作

一、文件存在的意义

  文件存储在硬盘上,其存在的意义是将数据持久化地保存(一般的数据存放在内存中)

二、文件的分类

2.1 程序文件

包括源程序文件(.c),目标文件(.obj),可执行文件(.exe)。

2.2 数据文件(文章介绍主要内容)

为程序运行时,进行读或写操作的文件。

三、数据文件的两种形式

3.1二进制文件

数据在内存中是以二进制形式存储的,若是不加转换地存储到文件当中,就会形成二进制文件。

3.2文本文件

若将内存中二进制形式存储的数据利用ASCII码进行转换,完毕后存储,就会形成文本文件。

四、文件的操作前提:打开和关闭文件

4.1文件的打开

使用函数:

FILE* fopen(const char* filename,const char* mode);

其中filename就是想要打开/新建的文件路径,若是直接在当前目录下进行文件操作可以直接写文件名;

mode是从几类固定格式中进行选择,来达到希望进行的操作,例如“r”为文本文件只读,“w”为文本文件只写,“rb”为二进制文件只读等等,详情可参考fopen - C++ Reference (cplusplus.com)

4.2文件的关闭

使用函数

int fclose ( FILE * stream );

其中stream是打开文件的时候,用于接受fopen返回值的变量

4.3流和标准流

4.3.1 流

由于不同的外部设备有着不同的输入/输出操作,为此我们假定流的概念,来方便操作。

规定统一向流中写入数据,或从流中读取数据。

4.3.2 标准流

C语言在书写#include<stdio>的时候,默认为我们打开了三个标准流

他们是:stdin标准输入流,stdout标准输出流,stderr标准错误流。

而scanf就是从标准输入流中读取数据。

printf是将数据输出到标准输出流中。

4.4文件指针

每一个被使用的文件都会在内存中开辟出相应的文件信息区用来存放文件信息,该区本质上是一个结构体变量,结构体类型为系统命名FILE。

因此,FILE*即文件指针类型,可以作为桥梁连接程序与文件。

五、文件的顺序读写函数

5.1 fputc与fgetc

可作用于所有输入/出流,为字符输入/出函数,单次写入一个字符

5.2 fputs与fgets

可作用于所有输入/出流,为文本输入/出函数,单词写入一行文本

5.3 fprintf与fscanf

可作用于所有输入/出流,为格式化输入/出函数,可实现将类似结构体等格式化数据放入文件中

5.4 fwrite与fread

可作用于文件输入/出流,可以自行决定写入/读出的元素大小和个数

六、文件的随机读写函数

6.1 fseek函数

如下:

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

其中,stream为文件指针变量,指向所操作的文件

offset为偏移量,可以为负数

origin为固定格式的枚举常量,使用时选择合适的枚举名即可,其意义是起始位置,SEEK_SET为文件开头,SEEK_CUR为文件指针(光标)当前位置,SEEK_END为文件末尾

函数整体用来读取文件内容。

6.2 ftell函数

long int ftell ( FILE * stream );

用于返回光标相对起始位置的偏移量

6.3 rewind函数

void rewind ( FILE * stream );

用于下达指令让文件指针位置返回到起始位置

七、文件读取结束的判定

7.1判断文本文件是否读取结束

①判断fgetc返回值是否为EOF

②判断fgets返回值是否为NULL

7.2判断二进制位见是否读取结束

看fread返回值是否小于实际要读的个数

  

  • 45
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值