目录

前言

1、为什么使用文件

2、什么是文件

2.1 程序文件

2.2 数据文件

2.3 文件名

3、文件的打开和关闭

3.1 文件指针

3.2 文件的打开和关闭

结(一)


前言

        本篇文章将介绍C语言的文件操作,在后面的内容讲到:为什么使用文件;什么是文件;文件的打开和关闭;文件的顺序读写;文件的随机读写;文本文件和二进制文件;文件读取和结束的判定;文件缓冲区。详细讲述了C语言的文件操作。此内容将分成三篇讲解,这是第一篇。

1、为什么使用文件

        在C语言中,一个程序中的数据,在其运行完成后会被自动销毁,而我们如果想把程序运行后的数据保存起来的话,就需要用到文件操作,将运行出来的结果放到文件中,电脑就会将其存放到硬盘上,实现了数据的持久化。

2、什么是文件

         硬盘上的文件是文件。

        但在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从功能的角度来分类的)。

2.1 程序文件

        以.c结尾的源程序文件;以.obj结尾的目标文件;以.exe结尾的可执行程序。

2.2 数据文件

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

        本章讨论的是数据文件。

2.3 文件名

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

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

        例如:c:\code\test.txt

        为了方便起见,文件标识常被成为文件名

3、文件的打开和关闭

3.1 文件指针

        缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”

        每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE.

        每当打开一个文件的时候,系统会根据文件情况自动创建一个FILE结构类型的变量,并填充其中的信息,使用者不必关心细节。

        一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样用起来更加方便。

        下面我们可以创建一个FILE*的指针变量:

FILE* pf;

        定义pf指针是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息可以访问该文件。也就是说,通过文件指针变量就能够找到与它关联的文件。

        比如:

C语言:文件操作(一)-LMLPHP

3.2 文件的打开和关闭

        文件子啊读写之前应该先打开文件,在使用结束后应该关闭文件

        在编写程序的时候,再打开文件的同时,都会返回一个FILE*的指针变量,也相当于建立了指针和文件的关系。

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

C语言:文件操作(一)-LMLPHP

        fopen函数参数有两个,第一个是文件的名称,第二个是打开方式。文件的打开方式有五种:

C语言:文件操作(一)-LMLPHP

        包括:r:读;w:写;a;r+;w+;a+。

         fopen函数的返回类型为:FILE*。

        举个例子:

#include <stdio.h>
int main()
{
	FILE* pf = fopen("test.exe", "w");

	return 0;
}

        这样我们就以写的方式打开了名为test.exe的文件。注意,有可能打开文件失败,所以在使用fopen之后,应该加上一个判断语句,判断fopen是否打开成功。当fopen打开文件失败后,它会返回一个空指针,因此我们可以这样判断:

	if (NULL == pf)
	{
		printf("%s\n", strerror(errno));
		return 1;
	}

        通过这个判断我们就可以知道文件是否成功打开。如果没有成功打开,则会返回失败原因。注意,在使用对应函数时应包含其对应头文件,如printf头文件stdio.h;strerror头文件string.h;errno头文件errno.h。

        效果:C语言:文件操作(一)-LMLPHP

        我以读的方式打开了一个名叫test1.exe的文件,运行后告诉我没有这样的文件。

        在使用完文件后我们还需要关闭文件:fclose

        程序:

	fclose(pf);
	pf = NULL;

        这样就关闭了文件,记得最后将pf赋值为NULL,不然它会成为一个野指针。

        整个程序的框架:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
	//打开文件
	FILE* pf = fopen("test1.exe", "r");
	if (NULL == pf)
	{
		printf("%s\n", strerror(errno));
		return 1;
	}
	//使用文件
	
	//......

	//关闭文件
	fclose(pf);
	pf = NULL;

	return 0;
}

        这样就是一套完整的文件的使用框架。

结(一)

        本篇内容先介绍到这里,后续会在下一篇文章中讲解。希望对大家有所帮助。

04-04 00:52