基础IO相关操作

基础IO

c语言文件IO相关操作:

fopen           //打开文件,以只读形式
fread           //从文件里读取一行
flcose          //关闭文件
fseek           //移动跳转到当前读写位置
.
.
.       //等等

以上是c库函数访问文件的调用接口,在linux下可以采用系统调用接口

c 库中用于描述文件的是文件流指针,文件流指针中还定义了一个缓冲区,我们所说的刷新缓冲区是库函数独有的,这个缓冲区用于将短小数据组合成大数据一次,习惯性写入文件,提高效率
而系统调用写没有这个缓冲区。
在c库中:

标准输入————————–stdin
标准输出 ———————-stdout
标准错误输出 ——————stderr

在系统调用中:
标准输入————————–stdin (0)
标准输出 ———————-stdout (1)
标准错误输出 ——————stderr(2)

库函数与系统调用接口的关系:上下级调用关系:
这里写图片描述

操作说明

系统调用接口如下:

int open (const char* path,int flags)
功能:打开文件;
参数:第一个是要打开的文件;
第二个是打开文件的方式

必选:
(O_RDONLY((只读),O_WRONLY(只写),O_RDWR(读写))

非必选:


O_CREAT        //若文件存在打开,不存在则创建
O_EXECL        //与O_CREAT同用时,若文件存在则报错
O_TRUNC       //若文件存在则将文件长度截为0
0_APPEND      //追加


返回值:失败返回-1,成功返回文件描述符
int open (const char* path,int flags, mode_t mode)
功能:创建文件
参数:第一个参数是要创建的文件和路径;

第二个是创建方式:在必选项(O_RDONLY((只读),O_WRONLY(只写),O_RDWR(读写))后面加上O_CREAT或者O_EXECL;
O_WRONLY|O_CREAT

第三个参数是给文件的权限,例如0644
int read(int fd, char *buf,size_t len)

功能:从fd文件中读取len字节的数据到从buf开始的空间去

参数:第一个是要读的文件(描述符);
第二个参数:读到另外一个空间的地址;
第三个是:所读数据的大小,以字节为单位


返回值:成功返回实际读取的字节数
int write(int fd ,const char*buf,size_ t len)
功能:往fd所指文件中写入到从buf开始的缓冲区中len字节的数据
返回:实际读写长度,出错返回-1
int close(int fd)
功能:关闭文件
参数:要关闭的文件的文件描述符
int lseek(int fd, off_ t offset,int  whence );
功能:用来改变读写一个文件时读写指针的位置
参数:第一个是已经打开的文件的描述符
offset:读写位置的偏移量,由whence来决定
whence:分为三种:SEEK_SET偏移位置为文件一开始,SEEK_CUR偏移位置为当前位置,SEEK_END偏移位置为文件内容末尾)
返回值:新的相对于文件开头偏移量

举例说明:
文件fd内容为“abcdefg”,
 int  set = lseek(fd, 0, SEEK_END);
 write(fd, "hello", 6);
 就实现了从文件原内容末尾写入(SEK_SET偏移位置为文件一开始,SEK_CUR偏移位置为当前位置,SEK_END偏移位置为文件内容末尾)

对文件操作的代码:
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值