一、open函数

  • 函数原型:int open(const char *path, int access, int mode);
  • 参数解释
  • path:要打开的文件路径和名称。
  • access:访问模式,宏定义和含义如下:
    – O_RDONLY(1):只读打开;
    – O_WRONLY(2):只写打开;
    – O_RDWR(4):读写打开;
    还可选择以下模式与以上3种基本模式相或:
    – O_CREAT(0x0100)创建一个文件并打开;
    – O_TRUNC(0x0200)打开一个已存在的文件并将文件长度设置为0,其他属性保持;
    – O_EXCL(0x0400)未使用;
    – O_APPEND(0x0800)追加打开文件;
    – O_TEXT(0x4000)打开文本文件翻译CR-LF控制字符;
    – O_BINARY(0x8000)打开二进制字符,不作CR-LF翻译;
  • mode:该参数仅在access=O_CREAT方式下使用,其取值如下:
    – S_IFMT(0xF000):文件类型掩码;
    – S_IFDIR(0x4000):目录;
    – S_IFIFO(0x1000):FIFO 专用;
    – S_IFCHR(0x2000):字符专用;
    – S_IFBLK(0x3000):块专用;
    – S_IFREG(0x8000):只为0x0000;
    – S_IREAD(0x0100):可读;
    – S_IWRITE(0x0080):可写;
    – S_IEXEC(0x0040):可执行;

二、fopen函数

  • 函数原型:FILE *fopen(char *filename, char *mode);
  • 参数解释
    filename:文件名称。
    mode:打开模式:

    • r:只读方式打开一个文本文件(该文件必须存在);
    • r+:可读可写方式打开一个文本文件(该文件必须存在);
    • w:只写方式打开一个文本文件(若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件);
    • w+:可读可写方式创建一个文本文件(若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件);
    • a:追加方式打开一个文本文件(若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留));
    • a+:可读可写追加方式打开一个文本文件(若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留));
    • rb:只读方式打开一个二进制文件(使用法则同r);
    • rb+:可读可写方式打开一个二进制文件(使用法则同r+);
    • wb:只写方式打开一个二进制文件(使用法则同w);
    • wb+:可读可写方式生成一个二进制文件(使用法则同w+);
    • ab:追加方式打开一个二进制文件(使用法则同a);
    • ab+:可读可写方式追加一个二进制文件(使用法则同a+);
  • 返回参数: 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。

三、两者的区别

  • 前者属于低级IO,后者是高级IO。
  • 前者返回一个文件描述符,后者返回一个文件指针。
  • 前者无缓冲,后者有缓冲。
  • 前者与 read, write 等配合使用, 后者与 fread, fwrite等配合使用。
  • 后者是在前者的基础上扩充而来的,在大多数情况下,用后者。

C语言中open与fopen的的解释和区别相关推荐

  1. 快速搞懂C语言中exit(0)与exit(1)有什么区别??

    C语言中exit(0)与exit(1)有什么区别?? exit(1)表示异常退出,在退出前可以给出一些提示信息,或在调试程序中察看出错原因. exit(0)表示正常退出. return是语言级别的,是 ...

  2. C语言中字母a等于,C语言中’a’和"a"有什么区别?,c语言中“!a"是什么意思啊...

    导航:网站首页 > C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 匿名网友: 1.本质区 ...

  3. c语言中exit(0)的作用,C语言中exit(0)与exit(1)有什么区别??

    C语言中exit(0)与exit(1)有什么区别?? 來源:互聯網  2011-05-19 04:55:14  評論 分類: 電腦/網絡 >> 軟件 問題描述: return又和exit( ...

  4. 简述C语言中.h文件和.c文件作用和区别

    简述C语言中.h文件和.c文件作用和区别 在c语言学习过程中,对.h文件和.c文件不甚了解,参考其他资料后对它进行简要分析: .h文件和.c文件作用 使用.h文件和.c文件的原因 .h文件和.c文件作 ...

  5. c语言中freopen函数,fopen和freopen_C中freopen和fopen的区别(用法+详解+区别)

    最佳答案 fopen 是操作文件用的,比如创建读取等,它有两个参数,第一个是文件名,第二个是操作方式. 第一个参数很好理解,因为是用来操作文件的,自然得告诉它要操作的是什么文件. 第二个参数也不难理解 ...

  6. c语言open不同的编码格式,C语言中open与fopen的区别

    int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY     ...

  7. c++语言中,vector容器与list容器的区别和联系?_百度知道

    C++ STL 提供了3个序列容器 :vector, deque, list vector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个 ...

  8. python 取模是什么意思_编程语言中,取余和取模的区别到底是什么?

    [取模和求余原理] 定义:a = bq + r 且 0 <= |r| < |b|. 题目:给定a和b,要求mod(a,b)和rem(a,b): 分析:对于满足a = bq + r 且 0 ...

  9. c语言中\n,\t,\r,\b的用法和区别

    1.\n  最容易理解,就是 换行,跳到下一行的起始位置. 2.\t  也容易理解,即跳到下一制表位,举例如下图所示: 3.\r 回车(不换行) , \r后边的数字替代 这一行最开始的相等数目的数字, ...

最新文章

  1. 使用putty上传文件
  2. 设计模式——UML图
  3. 第三次学JAVA再学不好就吃翔(part57)--StringBuffer和String的相互转换
  4. java 将换行代替_Java批量将文件中的段落替换成空格,根据指定分隔符换行(SQL示例)...
  5. 日常见到一些命令使用实例~(持续更新!)
  6. django 业务代码写哪儿_测试人员快速上手Django指南
  7. 常量指针(指向常量的指针)和指针常量
  8. 把书本上的字快速弄到电脑上
  9. 三极管的输入输出的特性曲线
  10. 周末C语言基础学习小结
  11. 这一周我学习了什么(一)
  12. Redis 数据丢失问题排查
  13. MATLAB实现光谱曲线包络线去除,附源代码
  14. win10电脑wifi显示无法连接服务器,Win10怎么连Wifi?解决Win10无法连接wifi无线网络的方法图文详解...
  15. 浅析Android中build.gradle的实用技巧
  16. 复制互联网——2010全球最值得模仿的230个网站
  17. 简单谈C++为什么是面向对象的程序设计
  18. Alpine 安装 MySQL
  19. IoT物联网设备数据安全解决方案
  20. TypeError: first argument must be an iterable of pandas objects, you passed an object of type “DataF

热门文章

  1. html搜索框美化代码单词,CSS 漂亮搜索框美化代码
  2. vs dll lib 使用记录
  3. SpringBoot是如何解析参数的
  4. SharePoint 2013技巧分享系列 - 同步Exchange显示高清用户照片
  5. 网站前端性能优化之javascript和css
  6. 前端实现搜索记录功能
  7. CentOS6.5系统重启后宕机
  8. 解决Nginx与mysql勾结的错误
  9. JEECG Framework 3.3.1 beta版本发布第一天战报(文档下载量破1300、...
  10. Bottle 框架中的装饰器类和描述符应用