文件的打开和关闭:fopen与fclose函数的使用

       在程序编写过程中,如果只是将数据存放在内存中,那么当程序结束时,内存被释放,数据也就没了。如果想要长久地保存数据,就要将数据写为文件,保存到磁盘里。ANSIC规定使用fopen函数来打开文件,fclose函数来关闭文件。

fopen函数的使用

        fopen函数需要我们传两个字符串类型的参数。

        第一个字符串传文件的地址、文件名和文件后缀,地址也可不写,如果不写地址,程序就会在当前目录下寻找文件。

        第二个字符串传文件的使用方式,如下图所示:

文件使用方式含义如果指定文件不存在
“r”(只读)为了输入数据,打开一个文本文件出错
“w”(只写)为了输出数据,打开一个文本文件建立一个新的文件
“a”(追加)向文本文件尾添加数据建立一个新的文件
“rb”(只读)为了输入数据,打开一个二进制文件出错
“wb”(只写)为了输出数据,打开一个二进制文件建立一个新的文件
“ab”(追加)向二进制文件尾添加数据出错
“r+”(读写)为了读和写,打开一个文本文件出错
“w+”(读写)为了读和写,建立一个新的文件建立一个新的文件
“a+”(读写)打开一个文件,在文件尾进行读写建立一个新的文件
“rb+”(读写)为了读和写,打开一个二进制文件出错
“wb+”(读写)为了读和写,建立一个新的二进制文件建立一个新的文件
“ab+”(读写)打开一个二进制文件,在文件尾进行读写建立一个新的文件

         当fopen函数接受到我们的传参后会返回一个FILE*类型的指针变量,即文件指针变量。我们需要创建一个FILE*类型变量来接收。通过这个FILE*类型的变量,我们可以实现对文件的操作。

        当然文件并不是一定能打开成功,所以我们需要进行一个判断,当文件打开失败时,函数返回空指针。

        举例:

FILE* pf = fopen("text,txt", "r");
if(NULL == pf){
    perror("");//报错
    return;
}

文件的打开细节与文件指针变量

        当文件被打开时,系统会在内存中开辟一块文件信息区,用来存放文件的相关信息(如文件名、文件内容等等)。这些信息被保存在一个结构体变量中,系统将其取名为FILE。

        如下是VS2013编译器对该结构体变量的声明:

struct _iobuf{
    char* _ptr;
    int _cnt;
    char* _base;
    int _flag;
    int _file;
    int _charbuf;
    int _bufsiz;
    char* _tmpfname;
};
typedef struct _iobuf FILE;

        不同编译器下的声明内容不完全相同,但大同小异。使用者不必在意细节,会用就行。

fclose函数的使用

        fclose函数使用起来非常简单,只需要将指向你想关闭文件的FILE*变量传参即可关闭文件。

        ps:为什么一定要关闭文件?

        文件不及时关闭会占用大量内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值