linux系统c读写文件函数open write read lseek用法实例

本文详细介绍了在Linux环境下,使用C语言进行文件操作的函数open, write, read和lseek的用法。通过示例代码解释了如何打开、写入、读取文件以及调整文件读写位置。文章还讨论了文件打开模式的选项,如只读、只写、追加等,并提供了实际操作中的注意事项,例如文件读写位置的管理和处理连续空格的情况。" 122356303,9345906,C语言难点解析:指针、函数与结构体,"['C语言', '编程', '数据结构', '函数指针', '内存管理']
摘要由CSDN通过智能技术生成

linux系统c读写文件函数open write read lseek用法实例

环境:ubuntu 16.04
1.头文件

#include <sys/types.h>        //定义了一些常用数据类型,比如size_t
#include <fcntl.h>            //定义了open、creat等函数,以及表示文件权限的宏定义
#include <unistd.h>            //定义了read、write、close、lseek等函数
#include <errno.h>            //与全局变量errno相关的定义
#include <sys/ioctl.h>        //定义了ioctl函数 

2.函数原型

int open(const char *pathname, int flags);
int open(const char *pathname, int flags,mode_t mode);

① 参数含义如下:
pathname:文件路径+文件名称
flags:文件打开方式
mode:打开文件的权限
返回值int:打开成功则返回文件描述符,打开失败则返回-1,同时设置全局变量errno的值来表示错误原因;
② flags标志的值可以使用在<fcntl.h>的宏定义:
O_RDONLY:只读
O_WRONLY:只写
O_RDWR:可读可写(常用)
O_CREAT:如果要打开的文件不存在,则创建新文件
O_EXCL:如果使用O_CREAT时文件已经存在,则返回错误消息
O_TRUNC:如果文件已经存在,且成功打开,则删除文件中原来的全部数据
O_APPEND:以追加写入方式打开文件,打开之后文件指针指向文件末尾

ssize_t read(int fd, void *buf, size_t count);

函数参数含义如下:

fd:文件描述符
buf:用来接收所读数据的缓冲区
count:请求读取的字节数
返回值:读取成功则返回读取的字节数,读取到文件尾则返回0,读取失败则返回-1,同时设置全局变量errno的值来表示错误原因;
ssize_t write(int fd, const void *buf, size_t count);

函数参数含义如下:
fd:文件描述符
buf:存放待写入数据的缓冲区
count:请求写入的字节数
返回值:写入成功则返回实际写入的字节数,写入失败则返回-1,同时设置全局变量errno的值来表示错误原因;

int close(int fd);

函数参数fd表示要关闭文件的文件描述符。
如果关闭成功,返回0,否则返回-1,同时设置全局变量 errno 报告具体错误的原因。

off_t lseek(int fildes, off_t offset, int whence);

函数说明:
每一个已打开的文件都有一个读写位置, 当打开文件时通常其读写位置是指向文件开头, 若是以附加的方式打开文件(如O_APPEND), 则读写位置会指向文件尾. 当read()或write()时, 读写位置会随之增加,lseek()便是用来控制该文件的读写位置. 参数fildes 为已打开的文件描述词, 参数offset 为根据参数whence来移动读写位置的位移数.

参数 whence 为下列其中一种:

    SEEK_SET 参数offset 即为新的读写位置.
    SEEK_CUR 以目前的读写位置往后增加offset 个位移量.
    SEEK_END 将读写位置指向文件尾后再增加offset 个位移量. 当whence 值为SEE
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值