Linux文件编程--标准C库函数

1.引入

Linux文件编程前两篇文章中对文件进行操作,都是使用open、read、write、close等函数。但我们知道fopen、fread等函数,同样可以对文件进行操作。那么两者间有什么区别呢?

以open与fopen为例:

open属于Unix/Linux下底层系统调用函数,不可移植
fopen属于标准C库函数,可移植

open返回文件描述符
fopen返回文件指针

open系列函数属于非缓冲文件系统
fopen系列函数属于缓冲文件系统

fopen一般用于打开普通文件,open用于打开设备文件,例如进程间通信用的管道、驱动等

open是在内核中处理,相比fopen对内核的依赖更高

多数情况还是使用open系列函数

以上为个人学习后的见解,有缺漏和错误的地方还请大家指教!

2.fopen

函数原型:
在这里插入图片描述
参数说明:
path:要打开的文件名称。
mode:文件访问方式

r   以只读方式打开文件,该文件必须存在。
r+  以读/写方式打开文件,该文件必须存在。
rb+ 以读/写方式打开一个二进制文件,只允许读/写数据。
rt+ 以读/写方式打开一个文本文件,允许读和写。
w   打开只写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
w+  打开可读/写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则创建该文件。
a   以附加的方式打开只写文件。若文件不存在,则会创建该文件;如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF 符保留)。
a+  以附加方式打开可读/写的文件。若文件不存在,则会创建该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF符不保留)。
wb  以只写方式打开或新建一个二进制文件,只允许写数据。
wb+ 以读/写方式打开或新建一个二进制文件,允许读和写。
wt+ 以读/写方式打开或新建一个文本文件,允许读和写。
at+ 以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+ 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。

返回值:
成功打开,返回指向该流的文件指针
打开失败,返回 NULL,并把错误代码存在error中

3.fread与fwrite

函数原型:
在这里插入图片描述
参数说明:
ptr:指向要写入/读取的数组的指针
size:每个对象的大小
nmemb:写入/读取次数
stream:指向 FILE 的指针
返回值:
fread:
返回实际读取的数据块数目
fwrite:
返回实际写入的数据块数目

4.fseek

函数原型:
在这里插入图片描述
参数说明:
stream:文件指针
offset:偏移量
whence:偏移基础位置

whence为以下其中一种:
SEEK_SET 文件头
SEEK_CUR 文件当前位置
SEEK_END 文件尾

返回值:
成功,返回0,否则返回非零值

5.fclose

函数原型:
在这里插入图片描述
参数说明:
fp:文件指针

实例小结

#include <stdio.h>
#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值