当前位置: 代码网 > it编程>编程语言>C/C++ > C++ open()和read()函数使用详解

C++ open()和read()函数使用详解

2025年01月11日 C/C++ 我要评论
对于framework工程师来说,必要c或者c++编程能力是必须的,像对设备节点的操作是最基本的操作,那么我们便会用到open和read函数。open()函数用于打开文件,而read()函数用于从打开

对于framework工程师来说,必要c或者c++编程能力是必须的,像对设备节点的操作是最基本的操作,那么我们便会用到open和read函数。open()函数用于打开文件,而read()函数用于从打开的文件中读取数据。

1. open() 函数

open()函数是c/c++标准库中的一个posix标准函数,用于打开一个文件并返回一个文件描述符(file descriptor),以供后续的读写操作。其函数声明如下:

#include <fcntl.h>
int open(const char* path, int flags, mode_t mode);
  • path:要打开或创建的目标文件名。
  • flags:对文件进行多种操作的模式,如o_rdonly(只读打开)、o_wronly(只写打开)、o_rdwr(读写打开)、o_creat(若文件不存在,创建文件)等。
  • mode:新文件的访问权限,通常使用权限掩码如s_irusr | s_iwusr | s_irgrp | s_iwgrp | s_iroth。
  • 如果打开文件成功,open()返回一个文件描述符;如果失败,返回-1,并设置errno以指示错误原因‌12。

2. read() 函数

read()函数用于从打开的文件描述符中读取数据。其函数声明如下:

#include <unistd.h>
ssize_t read(int fd, void* buf, size_t count);
  • fd:文件描述符,由open()函数返回。buf:指向用于存储读取数据的缓冲区的指针。
  • count:要读取的字节数。
  • 如果读取成功,read()返回实际读取的字节数;如果遇到文件结束或发生错误,返回-1,并设置errno以指示错误原因‌23。
  • 示例代码
  • 以下是一个简单的示例,展示如何使用open()和read()函数读取文件:
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
    const char* filepath = "input.txt";
    int fd = open(filepath, o_rdonly); // 以只读模式打开文件
    if (fd < 0) {
        perror("failed to open file");
        return -1;
    }
    char buffer[1024]; // 定义一个缓冲区用于存储读取的数据
    ssize_t bytesread = read(fd, buffer, sizeof(buffer)); // 从文件中读取数据到缓冲区
    if (bytesread < 0) { // 如果读取失败或遇到文件结束符eof
        perror("failed to read file");
        close(fd); // 关闭文件描述符
        return -1;
    }
    printf("read %ld bytes from file: %s\n", bytesread, buffer); // 打印读取的内容和字节数
    close(fd); // 关闭文件描述符
    return 0;
}

到此这篇关于c++ open()和read()函数使用的文章就介绍到这了,更多相关c++ open()和read()函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com