对于文件的打开与关闭,我们可以通过鼠标来控制!!但是,在我们写代码的时候,总不能来用鼠标来打开关闭文件,并且还能将代码放在那个文件里面吧!因此,我们需要一个文件指针来帮助我们来打开和关闭文件!!
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;
在上述的代码中,是一个文件指针:typedef struct _iobuf FILE;并且重命名为:FILE 因此,我们就能直接使用FILE这个指针了!!
不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。
每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息, 使用者不必关心细节。
一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便。
下面我们可以创建一个FILE*的指针变量:
FLIE* pf ; //文件指针变量
定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变 量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联 的文件。
上面我们简单的介绍了一下FILE的由来与使用,下面笔者将进入:文件的打开与关闭的方式上:
文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指 针和文件的关系。
ANSIC 规定使用fopen函数来打开文件,fclose来关闭文件。
//打开文件 FILE * fopen ( const char * filename, const char * mode ); //关闭文件 int fclose ( FILE * stream );
在打开文件的操作过程中:
const char * filename :是指文件名!!
const char * mode : 这个是指:文件的打开方式!!
举列一下:
#include <stdio.h> int main() { FILE* pf = fopen("tset.txt", "w"); }
经过上面的代码的运行,我们就可以清晰的看到:
因此,这样就是成功的创建并打开了这个文件!!
当文件成功打开的话,会返回一个地址,当文件打开失败的话,会返回一个NULL(空指针),所以,需要对返回值进行判断!!
下面请看一下笔者的完美打开关闭文件的简单代码:
int main() { //打开文件 FILE* pf = fopen("test.txt", "w"); if (NULL == pf) { perror("fopen"); return 1; } //写文件! //具体内容不再写了! //关闭文件 fclose(pf); pf = NULL; //手动置空(NULL) return 0; }
上述内容,则为正确的打开文件的操作!!要切记:一定要对指针进行是否为空指针的判断!!
下面简述几种文件的打开操作:
更多关于文件的精彩内容,请详见笔者后续更新!本文就先到此为止!!