在研究乙份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:是每次寫入的位元組數
成功:返回寫入的位元組數因此,read函式就可以取代scanf從command line讀取資料;write函式就可以代替printf,往command line列印輸出。失敗:返回-1並設定errno
ps: 寫常規檔案時,write的返回值通常等於請求寫的位元組
數count, 而向終端裝置或者網路寫時則不一定
#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 中。以下幾種...