C++ open()和read()函數(shù)使用詳解
對于Framework工程師來說,必要C或者C++編程能力是必須的,像對設(shè)備節(jié)點的操作是最基本的操作,那么我們便會用到open和read函數(shù)。open()函數(shù)用于打開文件,而read()函數(shù)用于從打開的文件中讀取數(shù)據(jù)。
1. open() 函數(shù)
open()函數(shù)是C/C++標準庫中的一個POSIX標準函數(shù),用于打開一個文件并返回一個文件描述符(File Descriptor),以供后續(xù)的讀寫操作。其函數(shù)聲明如下:
#include <fcntl.h> int open(const char* path, int flags, mode_t mode);
- path:要打開或創(chuàng)建的目標文件名。
- flags:對文件進行多種操作的模式,如O_RDONLY(只讀打開)、O_WRONLY(只寫打開)、O_RDWR(讀寫打開)、O_CREAT(若文件不存在,創(chuàng)建文件)等。
- mode:新文件的訪問權(quán)限,通常使用權(quán)限掩碼如S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH。
- 如果打開文件成功,open()返回一個文件描述符;如果失敗,返回-1,并設(shè)置errno以指示錯誤原因12。
2. read() 函數(shù)
read()函數(shù)用于從打開的文件描述符中讀取數(shù)據(jù)。其函數(shù)聲明如下:
#include <unistd.h> ssize_t read(int fd, void* buf, size_t count);
- fd:文件描述符,由open()函數(shù)返回。buf:指向用于存儲讀取數(shù)據(jù)的緩沖區(qū)的指針。
- count:要讀取的字節(jié)數(shù)。
- 如果讀取成功,read()返回實際讀取的字節(jié)數(shù);如果遇到文件結(jié)束或發(fā)生錯誤,返回-1,并設(shè)置errno以指示錯誤原因23。
- 示例代碼
- 以下是一個簡單的示例,展示如何使用open()和read()函數(shù)讀取文件:
#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]; // 定義一個緩沖區(qū)用于存儲讀取的數(shù)據(jù) ssize_t bytesRead = read(fd, buffer, sizeof(buffer)); // 從文件中讀取數(shù)據(jù)到緩沖區(qū) if (bytesRead < 0) { // 如果讀取失敗或遇到文件結(jié)束符EOF perror("Failed to read file"); close(fd); // 關(guān)閉文件描述符 return -1; } printf("Read %ld bytes from file: %s\n", bytesRead, buffer); // 打印讀取的內(nèi)容和字節(jié)數(shù) close(fd); // 關(guān)閉文件描述符 return 0; }
到此這篇關(guān)于C++ open()和read()函數(shù)使用的文章就介紹到這了,更多相關(guān)C++ open()和read()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Visual C++ 常用數(shù)據(jù)類型轉(zhuǎn)換方法詳解
本文純粹是總結(jié)一下有關(guān)類型轉(zhuǎn)換的貼子,需要的朋友可以參考下2017-06-06C++類靜態(tài)成員與類靜態(tài)成員函數(shù)詳解
靜態(tài)成員不可在類體內(nèi)進行賦值,因為它是被所有該類的對象所共享的。你在一個對象里給它賦值,其他對象里的該成員也會發(fā)生變化。為了避免混亂,所以不可在類體內(nèi)進行賦值2013-09-09簡單介紹C語言中的umask()函數(shù)和truncate()函數(shù)
這篇文章主要介紹了簡單介紹C語言中的umask()函數(shù)和truncate()函數(shù),是C語言入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-09-09C語言?深入理解動態(tài)規(guī)劃之計數(shù)類DP
動態(tài)規(guī)劃可謂是大名鼎鼎,筆試面試中的高頻考點,也是重點難點,動態(tài)規(guī)劃類型題目靈活多變,難度系數(shù)也相對較高,往往我們做不好動態(tài)規(guī)劃的題目就會與心儀的offer失之交臂,本篇文章我們就一起來研究一下動態(tài)規(guī)劃的計數(shù)類DP2022-04-04