文件基本操作(上)

 

 大家好!我是保护小周,本期为大家带来的是文件的基本操作(C),包括文件的打开读取写入关闭等操作。

目录

一、 为什么使用文件

二、什么是文件

2.1 程序文件

2.2 数据文件

2.3 文件名

2.4 文件类型

三、文件的打开和关闭

3.1文件指针

3.2文件的打开和关闭

四、文件的顺序读写

4.1 读字符函数 fgetc()

4.2读字符函数 fgets()

4.3 写字符函数fputc()

4.3 写字符串函数fputs()

正片开始!


一、 为什么使用文件

我们在程序中输入的数据一般会随着main()函数的结束而清空,因为数据这个时候是存放在内存中的,程序结束,内存回收。等我们下次再运行程序时又需要重新输入数据。如果我们想要将数据持续化存储,一般方法有:把数据存放在硬盘文件中,存放到数据库等方式。

使用文件我们可以将数据直接存放在硬盘上,做到持久化保存数据。


二、什么是文件

程序设计当中我们谈到的文件有两种:程序文件、数据文件(从文件功能的角度分析)。

2.1 程序文件

包括源文件(.c),目标文件(windows环境后缀为.obj),可执行文件(windows环境后缀为.exe)。

2.2 数据文件

文件的内容不一定是程序,还可以是程序运行时读写的数据,例如程序运行时需要从中读取数据的文件,或者输出内容的文件。

我们此次讨论数据文件

2.3 文件名

一个文件要有一个唯一的文件标识,以便用户识别和引用。

文件名包含3个部分 :文件路径+文件名+文件后缀

例如:D:\桌面\FILE\file.txt

2.4 文件类型

根据数据的类型,数据文件被称为文本文件或二进制文件。

如果数据以二进制的形式存储至外存,就是二进制文件。


三、文件的打开和关闭

3.1文件指针

缓冲文件系统中,"文件类型的指针"简称为"文件指针"。

每一个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息,这些信息保存在一个结构体变量中,该结构体类型是有系统申明,取名FILE。

这里不再做过多的介绍。

一般通过一个FILE的指针来维护FILE结构变量,这样使用非常方便。

 这里我们定义fp是一个指向FLIE类型数据的指针变量。通过文件指针变量能够找到与它相关联的文件。

3.2文件的打开和关闭

文件在读写之前需要打开文件,在程序结束之后需要关闭文件。

ANSIC规定使用fopen()函数来打开文件,fclose()来关闭文件

接下来为大家分享一下文件的使用方法及意义:

 在打开一个文件的时候,如果出错,fopen()将会返回一个空指针值NULL。我们可以利用这一性质来判断是否完成打开文件,并作出相应处理。

话不多说直接上代码!

 正常完成关闭文件操作时,fclost()函数的返回值为0;如果返回非零值则表示有错误发生。


四、文件的顺序读写

4.1 读字符函数 fgetc()

fgetc()函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针);

我们可以将读取到的数据给到一个字符变量存储。

上代码:

 这样就实现了从文件中读取一个字符,那我们有没有办法用fgetc()函数读取一个文件里的全部字符呢? 当然有!我们可以利用循环访问文件里的每一个字符,那我们用什么来中止呢?这里就不得不提 EOF()函数。EOF是End Of File 的缩写,表示文件结束,表明已经到达文件的结尾。好了,经过我这么一说,大家脑海里是不是知道该怎么写了?


 4.2读字符函数 fgets()

前面我们用fgetc()函数成功从文件里面读取到了数据,但是却只能一次读取一个字符,如果面对要读取的数据繁多的情况,为了减少程序运行的时间复杂度,我们需要另一个请出它的"升版"fgets()

 fgets()函数的功能是从指定的文件读取一个字符串到字符数组中。函数的调用形式为:fgets(字符数组名,n,文件指针);

其中 n 为一个正整数。表示从文件中读出的字符串不超过n-1个字符,在读入的最后一个字符后加上字符串结束标志'0',说通俗易懂点就是读多少?

 好了我们已经认识了两种读取数据的函数,现在让我们学习两种它们俩的好哥们!


4.3 写字符函数fputc()

fputc()函数的功能是把一个字符写入指定的文件中,函数的调用形式为:fputc(字符量,文件指针);

 这个语句的意思就是把字符a写入fp所指向的文件中。

对于使用fputc()函数有几点需要大家注意:

1.当用写(w)或者读写(r+)的方式打开文件时如果我们使用该函数写入数据,就会清除文件里原有的数据,写字符需要从文件首开始。如果需要保留原数据,可以用追加(a)来打开文件。

2.每写入一个字符,文件内部位置指针向后移动一个字节。

3.fputc()函数有一个返回值,如果写入成功则返回写入的字符,否则返回EOF,我们可以用这个判断是否写入成功。

我们来尝试一下用fputc()函数写入数据,由fgetc()函数从文件中读取:

在此之前我们需要普及一个文件指针定位函数,rewind(指向文件的指针);

rewind()将文件指针以文件开头为基准向后移动一个单位;这样文件指针就可以从文件首开始处理数据。

Let's go!

 以上就是fputc()函数的基本用法;好了既然有fputc()函数那怎么少的了fputs()函数呢?


4.3 写字符串函数fputs()

fputs()函数的功能是向指定的文件写入一个字符串,fputs()函数的调用形式为:fputs(字符串,文件指针);

其中字符串可以是字符常量,也可以是字符数组名,或者指针变量。

再使用fgetc()和fgets()将数据读出!

说干就干,来啊,上代码!


 以上便是读写字符数据的函数的基本应用。

通过对文件基本操作(上)的学习,我们应该对文件的基本读写有了一个初步的了解

接下来我们要学习的是格式化读写函数:

fscanf(); fprintf();

以及数据块读写函数:

fread(); 二进制输入,fwrite();二进制输出;

还有sscanf();  sprintf();

路人:“等等,你什么意思?”

 

还没看过瘾是吧,更多精彩敬请期待:文件基本操作(下)*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

本期收录于博主的专栏——C语言,适用于编程初学者,感兴趣的朋友们可以订阅,查看其它“C语言基础知识”。C语言_保护小周ღ的博客-CSDN博客

感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ  *★,°*:.☆( ̄▽ ̄)/$:*.°★* 

文章多处存在借鉴,如有侵权请联系修改删除!

  • 46
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

保护小周ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值