C语言中open与fopen的的解释和区别
一、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的的解释和区别相关推荐
- 快速搞懂C语言中exit(0)与exit(1)有什么区别??
C语言中exit(0)与exit(1)有什么区别?? exit(1)表示异常退出,在退出前可以给出一些提示信息,或在调试程序中察看出错原因. exit(0)表示正常退出. return是语言级别的,是 ...
- C语言中字母a等于,C语言中’a’和"a"有什么区别?,c语言中“!a"是什么意思啊...
导航:网站首页 > C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 匿名网友: 1.本质区 ...
- c语言中exit(0)的作用,C语言中exit(0)与exit(1)有什么区别??
C语言中exit(0)与exit(1)有什么区别?? 來源:互聯網 2011-05-19 04:55:14 評論 分類: 電腦/網絡 >> 軟件 問題描述: return又和exit( ...
- 简述C语言中.h文件和.c文件作用和区别
简述C语言中.h文件和.c文件作用和区别 在c语言学习过程中,对.h文件和.c文件不甚了解,参考其他资料后对它进行简要分析: .h文件和.c文件作用 使用.h文件和.c文件的原因 .h文件和.c文件作 ...
- c语言中freopen函数,fopen和freopen_C中freopen和fopen的区别(用法+详解+区别)
最佳答案 fopen 是操作文件用的,比如创建读取等,它有两个参数,第一个是文件名,第二个是操作方式. 第一个参数很好理解,因为是用来操作文件的,自然得告诉它要操作的是什么文件. 第二个参数也不难理解 ...
- c语言open不同的编码格式,C语言中open与fopen的区别
int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY ...
- c++语言中,vector容器与list容器的区别和联系?_百度知道
C++ STL 提供了3个序列容器 :vector, deque, list vector 中的元素是顺序存放的,所以随机访问很快,但是要插入和删除,这个时间复杂度就很高了,vector初始化时有一个 ...
- python 取模是什么意思_编程语言中,取余和取模的区别到底是什么?
[取模和求余原理] 定义:a = bq + r 且 0 <= |r| < |b|. 题目:给定a和b,要求mod(a,b)和rem(a,b): 分析:对于满足a = bq + r 且 0 ...
- c语言中\n,\t,\r,\b的用法和区别
1.\n 最容易理解,就是 换行,跳到下一行的起始位置. 2.\t 也容易理解,即跳到下一制表位,举例如下图所示: 3.\r 回车(不换行) , \r后边的数字替代 这一行最开始的相等数目的数字, ...
最新文章
- 使用putty上传文件
- 设计模式——UML图
- 第三次学JAVA再学不好就吃翔(part57)--StringBuffer和String的相互转换
- java 将换行代替_Java批量将文件中的段落替换成空格,根据指定分隔符换行(SQL示例)...
- 日常见到一些命令使用实例~(持续更新!)
- django 业务代码写哪儿_测试人员快速上手Django指南
- 常量指针(指向常量的指针)和指针常量
- 把书本上的字快速弄到电脑上
- 三极管的输入输出的特性曲线
- 周末C语言基础学习小结
- 这一周我学习了什么(一)
- Redis 数据丢失问题排查
- MATLAB实现光谱曲线包络线去除,附源代码
- win10电脑wifi显示无法连接服务器,Win10怎么连Wifi?解决Win10无法连接wifi无线网络的方法图文详解...
- 浅析Android中build.gradle的实用技巧
- 复制互联网——2010全球最值得模仿的230个网站
- 简单谈C++为什么是面向对象的程序设计
- Alpine 安装 MySQL
- IoT物联网设备数据安全解决方案
- TypeError: first argument must be an iterable of pandas objects, you passed an object of type “DataF