文章目录
- 一、文件介绍
- 1.1为什么使用文件
- 1.2什么是文件
- 1.3文件名
- 二、文件的打开和关闭
- 2.1文件指针
- 2.2文件的打开和关闭
一、文件介绍
1.1为什么使用文件
文件属于文件的一种,与普通文件载体不同,文件是以硬盘为载体存储在计算机上的信息集合。那么为什么使用文件呢?我们正在之前学过的C语言实现的通讯录程序的时候,当程序运行起来,可以对于通讯录中的联系人信息进行添加,修改,删除等操作,此时的数据是存放在内存中的,但是一旦程序运行结束后,通讯录中的数据就不复存在了,下次再次运行的时候还需重新录入等操作,这就变得很麻烦。
这时肯定在想,是不是能够将通讯录中的数据存储下来呢,只有我们删除数据的时候才会永久删除。这就涉及到了数据持久化的问题了,一般的数据持久化的方法有:存放在磁盘、存放在数据库。
1.2什么是文件
磁盘的文件是文件,在程序设计中,从文件功能角度分类一般说的文件有两种:程序文件、数据文件。
程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
1.3文件名
文件名:文件路径+文件名主干+文件后缀
例如:D:\code\bitclass\test.txt
其中D:\code\bitclass\为文件路径,test为文件名主干,.txt为文件后缀。
二、文件的打开和关闭
2.1文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.
如,VS2013编译环境提供的 stdio.h 头文件中有以下的文件类型声明:
struct _iobuf {char *_ptr;int _cnt;char *_base;int _flag;int _file;int _charbuf;int _bufsiz;char *_tmpfname;};
typedef struct _iobuf FILE;
每打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量。
一般都是通过一个FILE的指针来维护这个FILE结构的变量。下面创建一个FILE*的指针变量。
FILE* pf;//文件指针变量
定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件。
2.2文件的打开和关闭
文件在读写之前应该先打开文件,使用结束之后应该关闭文件。
在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。
文件的打开:
//打开文件
FILE * fopen ( const char * filename, const char * mode );
其中 filename为你所要新建的文件名,mode为文件打开的方式。
打开成功返回所创建文件的起始地址,打开失败返回NULL。(所以需对其返回值进行判断!!)
打开的方式如下:
文件的关闭:
int fclose ( FILE * stream );
文件的打开和关闭参考示范代码:
#include<stdio.h>
int main()
{//相对路径//打开文件,新建test.txt文件(注意!!所创建的文件在当前工程test_10_13文件路径下)FILE*pf = fopen("test.txt","w");//绝对路径//打开文件,新建test.txt文件(注意!!所创建的文件在C盘中的code文件夹中)FILE*pf = fopen("c:\\code\\test.txt", "w");if (pf==NULL){perror("fopen");return 1;}//写文件//关闭文件fclose(pf);pf = NULL;return 0;
}
效果图: