open()、write()、read()、close()、lseek()函数的基本概念和使用方式

1、open()
open()函数用于打开一个文件,并返回文件描述符。

open()函数的函数形式:

open(const char *pathname, int flags);

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

第一个形式的open()函数接受文件名和打开模式作为参数,返回文件描述符。

第二个形式的open()函数还接受文件权限作为参数,在创建文件时使用。

它接受文件名和打开模式作为参数,例如open('file.txt', 'r')将以只读模式打开文件file.txt。可以使用

不同的模式来打开文件,如只读('r')、只写('w')、读写('r+')等。

2、write()
write()函数用于向文件中写入数据。

write()函数的函数形式:

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

write()函数接受文件描述符、要写入的数据的指针和要写入的字节数作为参数,返回实际写入的字

节数。

它接受文件描述符和要写入的数据作为参数,例如write(fd, 'Hello, world!')将向文件描述符fd所代表

的文件中写入字符串'Hello, world!'。

3、read()函数的基本概念和使用方式:


read()函数用于从文件中读取数据。

read()函数的函数形式:

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

read()函数接受文件描述符、用于存储读取数据的缓冲区指针和要读取的字节数作为参数,返回实

际读取的字节数。

它接受文件描述符和要读取的字节数作为参数,例如read(fd, 100)将从文件描述符fd所代表的文件

中读取100个字节的数据。

4、close()
close()函数用于关闭一个打开的文件。

close()函数的函数形式:

int close(int fd);

close()函数接受文件描述符作为参数,返回值为0表示成功关闭文件,-1表示关闭文件失败。

它接受文件描述符作为参数,例如close(fd)将关闭文件描述符fd所代表的文件。

5、lseek()
lseek()函数用于移动文件描述符的指针位置。

lseek()函数的函数形式:

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

lseek()函数接受文件描述符、移动的偏移量和起始位置作为参数,返回文件指针移动后的偏移量。

它接受文件描述符、移动的偏移量和起始位置作为参数,例如lseek(fd, 10, 0)将把文件描述符fd所

代表的文件的指针位置移动到相对于文件开头的偏移量为10的位置。

  • 88
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`lseek()` 是一个系统调用函数,用于在文件中进行随机访问。它可以改变文件读写指针的位置,从而实现对文件的任意位置读写操作。`lseek()` 函数的原型如下: ```c off_t lseek(int fd, off_t offset, int whence); ``` - `fd` 是文件描述符,表示要进行操作的文件。 - `offset` 是偏移量,表示要移动的字节数。 - `whence` 是起始位置,可以是以下几个值之一: - `SEEK_SET`:从文件开头开始计算偏移量。 - `SEEK_CUR`:从当前读写位置开始计算偏移量。 - `SEEK_END`:从文件末尾开始计算偏移量。 `lseek()` 函数返回新的读写指针位置,如果出现错误,则返回值为 -1。 使用示例: ```c #include <fcntl.h> #include <unistd.h> int main() { int fd = open("example.txt", O_RDONLY); // 打开文件(只读模式) if (fd == -1) { perror("open"); return -1; } off_t offset = lseek(fd, 10, SEEK_SET); // 从文件开头偏移10个字节 if (offset == -1) { perror("lseek"); close(fd); return -1; } char buffer[100]; ssize_t bytesRead = read(fd, buffer, sizeof(buffer)); // 读取数据 if (bytesRead == -1) { perror("read"); close(fd); return -1; } close(fd); // 关闭文件 // 打印读取的数据 write(STDOUT_FILENO, buffer, bytesRead); return 0; } ``` 在上面的示例中,我们首先通过 `open()` 函数打开一个文件,并获得文件描述符 `fd`。然后,我们使用 `lseek()` 函数将读写指针从文件开头偏移10个字节。接下来,我们使用 `read()` 函数从当前读写位置读取数据到缓冲区 `buffer` 中。最后,我们使用 `write()` 函数将读取到的数据打印到标准输出。 这是一个简单的使用 `lseek()` 函数进行文件随机访问的示例。你可以根据需要自行调整偏移量和起始位置,并进行更复杂的文件操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值