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等配合使用。
后者是在前者的基础上扩充而来的,在大多数情况下,用后者。

作者:leon1741
来源:CSDN
原文:https://blog.csdn.net/LEON1741/article/details/78091974
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值