文件的打开和关闭,fopen()和fclose

一、文件的打开

        文件的打开一共有三个函数,分别是fopen()、fdopen()、fropen(),函数原型如下: 

                FILE *fopen(const char *path, const char *mode);

                FILE *fdopen(int fd, const char *mode);

                FILE *freopen(const char *path, const char *mode, FILE *stream);

三个文件打开函数都需要引用标准输入输出头文件:#include <stdio.h>

        函数的说明:

        1、fopen()函数打开文件,该文件名称为参数path输入的字符串,同时把他和流关联起来。参数mode表示的是打开文件的模式,集采用什么模式打开文件。具体如下:

        r  :采用只读的方式打开文件,流位于文件的开头。
        r+ :采用读写的方式打开文件,流位于文件的开头。
        w  :将文件截断为零长度(就是会把文件内容都清空,然后流定位在文件开头,打开文件后的读写操作都从文件开头进行)或创建文本文件以进行写入,流位于文件的开头。
        w+ :采用读写方式打开,如果文件不存在,将创建该文件,否则将截断该文件(就是会把文件内容都清空)。流位于文件的开头。
        a  :打开以附加(在文件末尾写入)。如果文件不存在,将创建该文件,流位于文件的结尾。
        a+ :打开以进行读取和附加(在文件末尾写入)。如果文件不存在,将创建该文件,在读取文件时,流位于文件的开头,但是在写文件时,流位于文件的结尾。

注意:使用附加方式打开文件(mode = "a"),会使得所有对该流的写入操作都会从文件结尾开始,就像是在每次写操作之前调用了fseek(stream, 0, SEEK_END);操作一样

        2、fdopen()函数作用是将流与现有的文件描述符fd相关联。并且函数设置的打开方式mode,需要和文件描述符fd设置的打开方式兼容,同时函数返回一个指向该流的文件指针。

        采用mode = "w" 或 "w+" 打开文件时,不会导致文件截断(即在采用者两个模式的时候文件不会像使用fopen函数一样将文件原有内容清空)

        3、fropen()函数打开文件,该文件名称为参数path输入的字符串,mode为文件打开方式(r,r+,w,w+,a,a+),stream表示文件指针,一般使用标准流文件(stdin/stdout/stderr),可以用于标准流的重定向。

        返回值:

               fopen()、fdopen、fropen函数打开文件成功时,都是返回一个文件指针,失败返回NULL,并且会设置errno以指示错误。

二、文件的关闭

        文件的关闭函数fclose()函数,函数原型如下:

              int fclose(FILE *fp);

        函数说明:

                fclose()函数调用fflush()函数刷新流,同时关闭基础的文件描述符。

        返回值:

                成功完成后,返回0。否则,将返回EOF并设置errno以指示错误。

        

        一下是文件的打开和关闭操作:

现象:

本文参考Linux官方函数说明文档。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙侃飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值