C語言read和write函式解析

2021-09-01 02:30:16 字數 1306 閱讀 9013

在研究乙份aes加密**的時候,發現**從command line獲取資料僅僅使用了read函式,很是疑問。從command line獲取資料不是要使用scanf函式嗎?所以,詳細了解了c庫的read函式特性。順帶了write函式,他們是couple一對兒!!!

主要參考文章:

感謝原博主

使用read、write函式們需要包含標頭檔案

#include

用於檔案描述符對應的檔案中讀取資料,原型:

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

引數說明:

fd: 是檔案描述符, 從command line獲取資料時,為0

buf: 為讀出資料的緩衝區;

count: 為每次讀取的位元組數(是請求讀取的位元組數,讀上來的資料保

存在緩衝區buf中,同時檔案的當前讀寫位置向後移)

返回值:

成功:返回讀出的位元組數

失敗:返回-1,並設定errno,如果在呼叫read

之前到達檔案末尾,則這次read返回0

用於將資料寫入到檔案描述符對應的檔案,原型:

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

引數說明:

fd:是檔案描述符(輸出到command line,就是1)

buf:通常是乙個字串,需要寫入的字串

count:是每次寫入的位元組數

返回值:

成功:返回寫入的位元組數

失敗:返回-1並設定errno

ps: 寫常規檔案時,write的返回值通常等於請求寫的位元組

數count, 而向終端裝置或者網路寫時則不一定

因此,read函式就可以取代scanf從command line讀取資料;write函式就可以代替printf,往command line列印輸出。

#define maxlen

1024

int main

(void

)printf

("試一試write函式~~~\n");

for(int i =

0; p[i]

!='\n'

;i++

)free

(p);

}

C語言中的Read和Write函式

讀函式read ssize t read intfd,void buf,size t nbyte read函式是負責從fd中讀取內容.成功時,read返回實際所讀的位元組數,如果返回的值是0,表示已經讀到檔案的結束了.小於0表示出現了錯誤.如果錯誤為eintr說明讀是由中斷引起的,如果是econnr...

read 函式和 write 函式

read 函式和 write 函式 最近開始從事搜尋引擎的工作,所以又重新開始了c c 的旅程,時隔4年 不得不複習一下c c 其中的內容,以下內容有網上別的朋友發表的,也有我自己總結的.1.read include ssize t read int filedes,void buf,size t ...

read 函式和 write 函式

1.read include unistd.h ssize t read int filedes,void buf,size t nbytes 返回值 讀取到的位元組數 0 讀到 eof 1 出錯 read 函式從 filedes 指定的已開啟檔案中讀取 nbytes 位元組到 buf 中。以下幾種...