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

 更新时间:2025年01月10日 10:36:05   作者:Knight_LC  
这篇文章主要介绍了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()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言实现打印九九乘法表的四种方式小结

    C语言实现打印九九乘法表的四种方式小结

    这篇文章主要为大家介绍了C语言实现打印九九乘法表的四种方式,文中的示例代码讲解详细,简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-07-07
  • OpenGL中点Bresenham绘制直线算法

    OpenGL中点Bresenham绘制直线算法

    这篇文章主要为大家详细介绍了OpenGL中点Bresenham绘制直线算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++模板基础之函数模板与类模板实例详解

    C++模板基础之函数模板与类模板实例详解

    C++ 除了支持函数模板,还支持类模板(Class Template),所以下面这篇文章主要给大家介绍了关于C++模板基础之函数模板与类模板的相关资料,需要的朋友可以参考下
    2021-06-06
  • C语言小知识之为什么要使用指针详析

    C语言小知识之为什么要使用指针详析

    指针是C语言中一个非常重要的概念,也是C语言的特色之一,使用指针可以对复杂数据进行处理,能对计算机的内存分配进行控制,在函数调用中使用指针还可以返回多个值,这篇文章主要给大家介绍了C语言小知识之为什么要使用指针的相关资料,需要的朋友可以参考下
    2021-10-10
  • 关于win32 gettimeofday替代方案

    关于win32 gettimeofday替代方案

    下面小编就为大家带来一篇关于win32 gettimeofday替代方案。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C语言中随机数rand()函数详解

    C语言中随机数rand()函数详解

    大家好,本篇文章主要讲的是C语言中随机数rand()函数详解,感兴趣的同学感快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • QT实现自定义Http客户端的示例代码

    QT实现自定义Http客户端的示例代码

    这篇文章主要为大家详细介绍了QT如何实现自定义Http客户端的,可以实现支持get,post请求方式;支持连接超时处理;支持网络错误,尝试重连等功能,感兴趣的小伙伴可以学习一下
    2022-11-11
  • C++实现将数据写入Excel工作表的示例代码

    C++实现将数据写入Excel工作表的示例代码

    直观的界面、出色的计算功能和图表工具,使Excel成为最流行的个人计算机数据处理软件。在本文中,您将学习如何使用 Spire.XLS for C++ 创建 Excel 文档,以及如何将数据写入 Excel 工作表
    2023-03-03
  • 一文详解C语言操作符

    一文详解C语言操作符

    这篇文章主要详细介绍了C语言的操作符,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 嵌入式C语言二级指针在链表中的应用

    嵌入式C语言二级指针在链表中的应用

    这篇文章主要为大家介绍了嵌入式C语言二级指针在链表中的应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04

最新评论