函数简介

函数原型:FILE * fopen(const char * path,const char * mode);
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
参数说明:
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
“r” 以只读方式打开文件,该文件必须存在。
“r+” 以可读写方式打开文件,该文件必须存在。
”rb+“ 读写打开一个二进制文件,允许读写数据(可以任意修改),文件必须存在。
“w” 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
“a” 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
”a+“ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
“wb” 只写打开或新建一个二进制文件;只允许写数据(若文件存在则文件长度清为零,即该文件内容会消失)。
“wb+” 读写打开或建立一个二进制文件,允许读和写(若文件存在则文件长度清为零,即该文件内容会消失)
“wx” 创建文本文件,只允许写入数据.[C11]
“wbx” 创建一个二进制文件,只允许写入数据.[C11]
”w+x“ 创建一个文本文件,允许读写.[C11]
“wb+x” 创建一个二进制文件,允许读写.[C11]
“w+bx” 和"wb+x"相同[C11]
“rt” 只读打开一个文本文件,只允许读数据
  “wt” 只写打开或建立一个文本文件,只允许写数据
  “at” 追加打开一个文本文件,并在文件末尾写数据
  “rb” 只读打开一个二进制文件,只允许读数据
  “wb” 只写打开或建立一个二进制文件,只允许写数据
  “ab” 追加打开一个二进制文件,并在文件末尾写数据
  “rt+” 读写打开一个文本文件,允许读和写
  “wt+” 读写打开或建立一个文本文件,允许读写
  “at+” 读写打开一个文本文件,允许读,或在文件末追加数据
  “rb+” 读写打开一个二进制文件,允许读和写
  “ab+” 读写打开一个二进制文件,允许读,或在文件末追加数据
以x结尾的模式为独占模式,文件已存在或者无法创建(一般是路径不正确)都会导致fopen失败.文件以操作系统支持的独占模式打开.[C11]
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库以二进制模式打开文件。如果不加b,表示默认加了t,即rt,wt,其中t表示以文本模式打开文件。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。
有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。
二进制和文本模式的区别
1.在windows系统中,文本模式下,文件以"\r\n"代表换行。若以文本模式打开文件,并用fputs等函数写入换行符"\n"时,函数会自动在"\n"前面加上"\r"。即实际写入文件的是"\r\n" 。
2.在类Unix/Linux系统中文本模式下,文件以"\n"代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。
打开方式总结:各种打开方式主要有三个方面的区别:
①打开是否为二进制文件,用“b”标识。
②读写的方式,有以下几种:只读、只写、读写、追加只写、追加读写这几种方式。
③对文件是否必 须存在、以及存在时是清空还是追加会有不同的响应。具体判断如下图。

fopen及读写权限相关推荐

  1. php判断目录是否有写的权限,php中判断文件空目录是否有读写权限的函数代码_php技巧...

    上面的函数有一个问题就是filename 必需.规定要检查的文件 ,必须是文件啊,目录不可判断,下面我们来判断空目录. 实例1 该功能非常常用,特别在一些需要生成静态文件的项目中,一个目录是否可以,关 ...

  2. 在 Linux 上给用户赋予指定目录的读写权限

    在 Linux 上指定目录的读写权限赋予用户,有两种方法可以实现这个目标:第一种是使用 ACL (访问控制列表),第二种是创建用户组来管理文件权限,下面会一一介绍.为了完成这个教程,我们将使用以下设置 ...

  3. javascript mysql读写_微信小程序云开发实现云数据库读写权限

    一.问题场景 在做图片点赞.查看量的时候,非管理员给非自己上传(创建)的图片点赞,更新数据失败,失败原因是没有修改数据权限 二.问题描述 云数据库中的读写权限是有严格规定的 非管理员非创建者,没办法写 ...

  4. MongoDB增加用户认证:增加用户、删除用户、修改用户密码、读写权限、只读权限...

    MongoDB增加用户认证:增加用户.删除用户.修改用户密码.读写权限.只读权限 说明:增加用户是针对数据库进行操作    www.2cto.com   1.进入到数据库 use dbname 2.针 ...

  5. Delphi开发的数据库程序在C:\PDOXUSRS.NET生成文件,拒绝访问及读写权限

    Delphi开发的数据库程序在C:\PDOXUSRS.NET生成文件,拒绝访问及读写权限, "无法打开 PARADOX.NET.这个文件可以随便删除的,下次会自动产生. Permission ...

  6. 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 )

    文章目录 一.ptrace 函数族 1.进程附着 2.进程脱离 3.进程数据读写权限 4.进程对应的主线程寄存器读写 5.单步调试 6.继续向后执行 二.ptrace 函数族状态转换 一.ptrace ...

  7. 服务器给站点读写权限,IIS7目录权限设置的问题详解Windows服务器操作系统 -电脑资料...

    今天自己把服务器安装了windows 2008同时也是iis7了,但是在设置权限时有些小问题不了解后来百度了才知道解决办法, 前段时间在windows server 2008 r2 (x64)服务器上 ...

  8. linux ttyusb读写_linux下非root用户获得devttyUSB0的读写权限

    linux下非root用户获得devttyUSB0的读写权限 首先查看/dev/ttyUSB0的权限属性,在终端输入:teashaw@http://www.doczj.com/doc/049b1b8e ...

  9. svn教程----权限分配之示例一:开发人员拥有读写权限

    权限分配之示例一:开发人员拥有读写权限 进入权限分配界面: 添加组或用户: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W81VvEXa-1626155775368) ...

最新文章

  1. less.js插件监听
  2. 06540计算机网络考试大纲,2020年自考06540计算机网络基本原理复习资料(7)
  3. 【机器学习算法专题(蓄力计划)】四、机器学习中的著名的牛顿法
  4. 全球高效能人士给青年的50个忠告(下)
  5. Python爬虫之一键保存全部必应高清1080P壁纸
  6. HDOJ 2870 Largest Submatrix
  7. sql ,类型转换,日期截取格式
  8. QQ微信实时消息转发图片文件视频语音互联机器人自动发消息
  9. 一种人脸识别活体检测方法:基于背景的活体判断方法
  10. 2012最犀利语录大全
  11. 德州仪器发布99%高效GaN逆变器功率级的参考设计
  12. 欧格教育:差评对店铺有哪些影响
  13. 【数字电路】数字电子时钟设计
  14. 10个顶级jQuery Date弹出插件
  15. 搜狗浏览器下载2015官方版最新版
  16. 国家级专新特精“小巨人”「皖仪科技」携手企企通,打造采购数字化平台成功上线
  17. 前端模块化编程(import,export)
  18. 征文 | 收获,不止GBase 8a——GBase 8a培训总结与感受
  19. 先码后看 如何搭建小程序https和wss服务器 侵立删
  20. springboot项目引入图片_项目经验不重样!3个基于 SpringBoot 的图片识别处理系统送给你!...

热门文章

  1. Tcl/Tk string详解
  2. Javaweb——水果系统基础版
  3. tzc 1345 推箱子
  4. 机器学习算法实践——K-Means算法与图像分割
  5. 华为Ensp软件入门
  6. 浅谈:前端如何赋能业务?
  7. Ameya360:AMD芯片组驱动有什么用 ?
  8. Buffon投针实验 · 数学的直观理解 · 基础知识很重要
  9. KubeSphere 内置的 Prometheus 通过 remote write 至 Thanos 存更长期数据
  10. 我用diffusion把姐妹cos成了灭霸的模样