1、为什么使用文件
在编写例如通讯录、图书管理系统等程序的时候,所记录的数据,只有程序运行的时候才会有,但是如果结束运行,之前的数据全部没有了,又要重新输入、操作。这样子就很难受,我们在使用类似程序的时候,应该要把数据记录下来,只有自己选择删除的时候,对应信息才会被删除,这就涉及到了数据持久化问题。
要实现数据持久化可以 把数据存放在磁盘文件中,或者 存放到数据库里面。C语言里使用文件操作,我们就可以把数据放在磁盘文件中,实现数据持久化。
2、什么是文件
在程序设计中,从文件功能来分类,我们一般谈的文件有两种:程序文件、数据文件。
a. 程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
b. 数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
在这里,显而易见,我们要讨论的是数据文件。
一个文件要有一个唯一标识,以便于用户识别和引用。这个标识俗称“文件名”。文件名包含三个部分:文件路径+文件名主干+后缀。例如:c:\code\test.c 这个文件名里面,文件路径是c:\code\ 文件名主干是test 后缀是.c
3、文件的打开和关闭
文件的打开
我们要对文件进行操作,首先就要打开文件,然后在文件里面进行数据的增删查改,用完之后关闭文件。下面一行是C语言内置的打开文件的函数,从中可以得知,该fopen函数有两个参数,返回值是FILE*。两个参数里面,第一个参数是文件名,第二个参数是打开文件的方式。
FILE * fopen ( const char * filename, const char * mode );
根据需求不同,打开文件也有不同的方式,比如我只需要知道这个文件里有什么数据,那么可以用“只读”方式打开文件,打开文件之后,文件里的内容不可更改。又或者我想要在这个文件后面新增内容,原有数据不变,那么可以用“追加”方式打开文件……
比如下方,我用“只读”方式打开文件(注意fopen的两个参数都是用双引号)。在这里设计FILE* 类型的指针pf来接收fopen函数的返回值,并且要判断pf指针是否为空。
这里fopen函数的第一个参数,发现并不是完整的文件名,而是 文件名主干+后缀 ,这是因为test.txt文件和这个C语言程序是在一个文件夹下面的,