【C 语言】文件的基本操作(上)

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

image.gif

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

image.gif

正片开始!


一、 为什么使用文件

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

image.gif

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


二、什么是文件

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

2.1 程序文件

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

2.2 数据文件

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

我们此次讨论数据文件

2.3 文件名

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

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

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

2.4 文件类型

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

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


三、文件的打开和关闭

3.1文件指针

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

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

这里不再做过多的介绍。

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

image.gif

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

3.2文件的打开和关闭

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

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

image.gif

image.gif

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

image.gif

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

话不多说直接上代码!

image.gif

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


四、文件的顺序读写

4.1 读字符函数 fgetc()

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

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

上代码:

image.gif

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

image.gif


4.2读字符函数 fgets()

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

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

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

image.gif

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


4.3 写字符函数fputc()

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

image.gif编辑

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

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

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

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

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

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

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

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

Let's go!

image.gif

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


4.3 写字符串函数fputs()

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

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

image.gif编辑

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

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

image.gif编辑image.gif


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

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

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

fscanf(); fprintf();

以及数据块读写函数:

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

还有sscanf();  sprintf();

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

image.gif

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

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

遇见了你,所有的星星都落在了我的头上image.gif

相关文章
|
20天前
|
存储 编译器 C语言
如何在 C 语言中判断文件缓冲区是否需要刷新?
在C语言中,可以通过检查文件流的内部状态或使用`fflush`函数尝试刷新缓冲区来判断文件缓冲区是否需要刷新。通常,当缓冲区满、遇到换行符或显式调用`fflush`时,缓冲区会自动刷新。
|
20天前
|
存储 编译器 C语言
C语言:文件缓冲区刷新方式有几种
C语言中文件缓冲区的刷新方式主要包括三种:自动刷新(如遇到换行符或缓冲区满)、显式调用 fflush() 函数强制刷新、以及关闭文件时自动刷新。这些方法确保数据及时写入文件。
|
1月前
|
C语言
【C语言】探索文件读写函数的全貌(三)
【C语言】探索文件读写函数的全貌
|
1月前
|
存储 C语言
【C语言】探索文件读写函数的全貌(二)
【C语言】探索文件读写函数的全貌
|
1月前
|
C语言
【C语言】探索文件读写函数的全貌(一)
【C语言】探索文件读写函数的全貌
|
1月前
|
存储 文件存储 C语言
【C语言】深入了解文件:简明指南
【C语言】深入了解文件:简明指南
|
2月前
|
Linux C语言
C语言 文件IO (系统调用)
本文介绍了Linux系统调用中的文件I/O操作,包括文件描述符、`open`、`read`、`write`、`lseek`、`close`、`dup`、`dup2`等函数,以及如何获取文件属性信息(`stat`)、用户信息(`getpwuid`)和组信息(`getgrgid`)。此外还介绍了目录操作函数如`opendir`、`readdir`、`rewinddir`和`closedir`,并提供了相关示例代码。系统调用直接与内核交互,没有缓冲机制,效率相对较低,但实时性更高。
|
3月前
|
存储 C语言
【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】
【C语言】C语言-学生成绩管理系统(源码+数据文件+课程论文)【独一无二】
51 15
|
3月前
|
存储 C语言
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
【c语言】职工信息管理系统 包含读取写入txt文件,职工信息的增删改查
|
3月前
|
存储 自然语言处理 程序员
【C语言】文件的编译链接和预处理
【C语言】文件的编译链接和预处理
下一篇
无影云桌面