Linux文件编程_相关函数

本文介绍了Linux环境下文件编程的基本操作,包括open函数的使用,详细解析了文件权限标志如O_RDONLY、O_WRONLY、O_RDWR等,并通过示例说明了write和read函数的使用,以及如何通过lseek移动文件光标。还提到了文件创建函数creat及其模式设置。
摘要由CSDN通过智能技术生成

编写代码时需包含以下头文件:

  1. open函数:

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

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

pathname:要打开的文件名(含路径,若缺省则为当前路径).

在使用此函数前,需定义文件描述符,每个文件对应一个文件描述符,以打开想要打开的文件

flags(表示此文件可操作的权限):

O_RDONLY 只读打开 O_WRONLY 只写打开 O_RDWR 可读可写打开

附带上面三种权限后,打开的文件就只能按照这种权限来操作。下列还有一些可选择的常数:

O_CREAT 若文件不存在则创建它。

其中,0600代表可操作的权限,可读:r/4,可写w/2,可执行x/1,故0600代表可读可写权限(4+2)

运行结果如下:

O_EXCL 如果同时指定了O_CREAT,而文件已经存在,则打开文件失败。(要和OCRET一起使用)

O_APPEND 每次写时都加到文件的尾端。选用后,写入文件里的新内容不会覆盖原有内容。若没有此指令,则会覆盖相应字节的内容。

例:原文件含有内容为12345678,使用此指令后,代码及运行结果如下:

O_TRUNC 属性去打开文件时,若文件本身有内容,则全覆盖。

  1. write函数:

写入函数,将想要写入的数据写入到对应文件内

ssize_t write(int fd,const void *buf,size_t count);(文件描述符,指向数据的指针,写入文件的大小)

写入成功,返回整数;写入失败,返回-1.

代码如下:

补充一下:close()函数,在读写完成后需要关闭文件,用此函数,括号内为文件对应的描述符。

  1. read函数:

ssize_t write(int fd,const void *buf,size_t count);含义与write一致

(malloc返回值为void *,故将所开辟内存存到指针内时需要强制转换),readBuf为存放写入数据的指针

全部代码如下:

编译运行后结果如下:

从结果可以看到,读取内容失败了。原因是在内容写入完毕后,光标的位置会自动定位到输入内容的最后一个字符,所以在读取时,只能读取到内容后方的内容(空气)。

解决方法:①写入完成后,在读取前编写重新打开文件的代码:

②移动光标:

引入一个新函数lseek():

off_t lseek(int fd,off_t offset,int whence);(文件描述符,偏移值,光标位置)

Whence(位置)分为以下三种情况:

SEEK_SET: 指向文件头

SEEK_CUR: 指向文件当前位置

SEEK_END: 指向文件尾部

offset是对whence的偏移值。代码如下:

其中,偏移值为负代表向前偏移,为正代表向后偏移。

关于如何通过代码计算文件大小:

  1. creat函数:

int creat(const char *filename,mode_t mode);

其中filename表示要创建的文件名(包含路径,若缺省为当前路径)

mode为创建模式(可读、可写or可执行)

常见创建模式:

S_IRUSR 4 可读

S_IWUSR 2 可写

S_IXUSR 1 可执行

S_IRWXU 7 可读、写、执行

代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值