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()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Visual C++ 常用数据类型转换方法详解

    Visual C++ 常用数据类型转换方法详解

    本文纯粹是总结一下有关类型转换的贴子,需要的朋友可以参考下
    2017-06-06
  • C++关于size_t的bug解决案例

    C++关于size_t的bug解决案例

    这篇文章主要为大家介绍了C++关于size_t的bug解决案例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • C++扫雷游戏的简单制作

    C++扫雷游戏的简单制作

    这篇文章主要为大家详细介绍了C++扫雷游戏的简单制作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言实现BMP图像边缘检测处理

    C语言实现BMP图像边缘检测处理

    这篇文章主要为大家详细介绍了C语言实现BMP图像边缘检测处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • C++类静态成员与类静态成员函数详解

    C++类静态成员与类静态成员函数详解

    静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。为了避免混乱,所以不可在类体内进行赋值
    2013-09-09
  • 简单介绍C语言中的umask()函数和truncate()函数

    简单介绍C语言中的umask()函数和truncate()函数

    这篇文章主要介绍了简单介绍C语言中的umask()函数和truncate()函数,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • C语言实现循环单链表的示例代码

    C语言实现循环单链表的示例代码

    这篇文章主要给大家详细介绍了C语言如何实现循环单链表,文章通过代码示例讲解的非常详细,对我们的学习或工作有一定的参考价值,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • C++ 程序抛出异常后执行顺序说明

    C++ 程序抛出异常后执行顺序说明

    这篇文章主要介绍了C++ 程序抛出异常后执行顺序说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • C语言 深入理解动态规划之计数类DP

    C语言 深入理解动态规划之计数类DP

    动态规划可谓是大名鼎鼎,笔试面试中的高频考点,也是重点难点,动态规划类型题目灵活多变,难度系数也相对较高,往往我们做不好动态规划的题目就会与心仪的offer失之交臂,本篇文章我们就一起来研究一下动态规划的计数类DP
    2022-04-04
  • Qt实现字幕滚动效果的示例代码

    Qt实现字幕滚动效果的示例代码

    这篇文章主要介绍了Qt如何利用QTimer实现字幕滚动功能,并且可以实现自行更改文本内容、自适应文本大小、自由调整速度等功能,感兴趣的可以学习一下
    2022-06-06

最新评论