文章目录
前言
当我们在编写一个项目的时候,自然而然想到要把之前写入的数据保存起来。而只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。此处我们就讲到如何将数据放入到磁盘文件当中。本文主要介绍c语言中文件操作的相关内容。
一、文件是什么?
文件是以计算机硬盘为载体存储在计算机上的信息集合。是数据源的一种,最主要的作用是保存数据。在对计算机的使用中我们几乎离不开文件。例如常见的有word
文档,txt文本文件,图片文件、音频文件等。
二、文件
1.文件的分类
在程序设计中,我们可将文件分为两大类:程序文件和数据文件
<1>程序文件
包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序文件(windows环境后缀为.exe)。
<2>数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
2.文件名
文件名是文件存在的标识,操作系统根据文件名来对其进行控制和管理。每个文件都被设定一个指定的名称,由文件主名和扩展名组成。
三、文件的打开和关闭
1.文件指针
我们对文件进行一系列的操作——打开文件、关闭文件、向文件中写入数据、从文件中读出数据。所有的操作都离不开文件指针。
文件指针: FILE*
FILE:每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中,取名FILE。
**FILE:通过一个FILE的指针来维护这个FILE结构的变量,对文件进行操作。
FILE* pf;//文件指针变量
pf是一个指向FILE类型数据的指针变量。即通过文件指针变量能够找到与它关联的文件。
2.文件的打开与关闭函数
(1)fopen函数
//打开文件
FILE * fopen ( const char * filename, const char * mode );
第一个参数filename为文件名(包括文件路径),第二个参数mode为打开方式。若打开成功,fopen返回一个结构指针地址,否则返回NULL。
文件的打开方式
例如:对文件进行写操作
#include <stdio.h>
int main()
{
FILE* pf;
//打开文件
pf = fopen("file1.txt", "w");
//创建文件并进行判断
if (pf != NULL)
{
printf("打开文件成功!");
//关闭文件
fclose(pf);
}
return 0;
}
(2)fclose函数
在执行完文件的操作后,要用 fclose() 函数进行“关闭文件”操作。以此释放相关资源,避免数据丢失。同时也可提高系统整体的执行效率。
//fp 为文件指针,关闭文件代码如下:
fclose(fp);
注:关闭成功返回值0,否则返回非零值。
3.文件的顺序读写
打开文件后要对文件进行具体的操作,以下为文件的读写函数。
fgetc():读取一个字符
fputc():写入一个字符
fgets():读取一个字符串
fputs():写入一个字符串
fprintf():写入格式化数据
fscanf():格式化读取数据
fread():读取数据
fwrite():写入数据
例:
#include <stdio.h>
int main()
{
FILE* fp;
fp = fopen("D:\\codeFile\\test1.txt", "r");
if (fp != NULL)
{
//feof(file stream )文件指针到达文件末尾
while (!feof(fp)) //读文件
printf("%c", fgetc(fp));
}
else
printf("fail to open! \n");
fclose(fp);
return 0;
}
四、文件状态检查
1.文件结束
int feof(FILE *fp)
(1) 功能说明
该函数用来判断文件是否结束。
(2) 参数说明
fp:文件指针。
(3) 返回值
0:假值,表示文件未结束。
1:真值,表示文件结束。
2. 文件读/写出错
int ferror(FILE *fp)
(1) 功能说明
检查由fp指定的文件在读写时是否出错。
(2) 参数说明
fp:文件指针。
(2) 返回值
0:假值,表示无错误。
1:真值,表示出错。
3.清除文件错误标志
void clearerr(FILE *fp)
(1) 功能说明
清除由fp指定文件的错误标志。
(2) 参数说明
fp:文件指针。
(3) 返回值
无。
4.了解文件指针的当前位置
long ftell(FILE *fp)
(1) 功能说明
取得由fp指定文件的当前读/写位置,该位置值用相对于文件开头的位移量来表示。
(2) 参数说明
fp:文件指针。
(3) 返回值
正常返回:位移量(这是个长整数)。
异常返回:-1,表示出错。
* 关于exit()函数
void exit(int status)
1. 功能说明
exit()函数使程序立即终止执行,同时将缓冲区中剩余的数据输出并关闭所有已经打开的文件。
2. 参数说明
status:为0值表示程序正常终止,为非0值表示一个定义错误。
3. 返回值
无。
* 关于feof()函数
int feof(FILE *fp)
1. 功能说明
在文本文件(ASCII文件)中可以用值为-1的符号常量EOF来作为文件的结束符。但是在二进制文件中-1往往可能是一个有意义的数据,因此不能用它 来作为文件的结束标志。为了能有效判别文件是否结束,ANSI C提供了标准函数feof(),用来识别文件是否结束。
2. 参数说明
fp:文件指针。
3. 返回值
返回为非0值:已到文件尾。
返回为0值:表示还未到文件尾。
总结
注意:
文件是否打开成功
关闭文件
文件指针置空