c標準庫I O介面和系統呼叫I O介面

2021-09-22 18:22:33 字數 3350 閱讀 4370

c標準庫i/o介面

fopen

函式原型:file*  fopen(const char* path,const char* mode)

功能:開啟檔案,並返回指向該檔案的指標

引數:path:開啟檔案的路徑及檔名

mode:開啟檔案的方式,其可以有以下值

r:唯讀方式開啟,檔案必須存在,若不存在則報錯

r+:可讀寫,必須存在,若不存在則報錯

w:只寫,檔案存在則檔案長度清0,檔案不存在則建立該檔案

w+:可讀寫,檔案存在則檔案長度清0,檔案不存在則建立該檔案

a:附加方式開啟只寫,不存在建立該檔案,存在寫入的資料加到檔案尾,eof符保留

a+:附加方式開啟可讀寫,不存在建立該檔案,存在寫入的資料加到檔案尾,eof符不保留

若為二進位制檔案,則在字母後面加上乙個b,開啟方式同上

返回值:成功返回乙個檔案流指標,失敗返回錯誤**

fread

函式原型:size_t fread(void* buff,size_t size,size_t count,file* stream)

count:資料塊個數,即要讀取的資料大小為size的元素個素

stream:提供資料的檔案指標,該指標指向檔案內部資料

返回值:讀取的總資料塊個數,有時候會讀取不到資料塊大小的資料,所以返回值為0

fwrite

函式原型:size_t fwrite(const void* buff, size_t size, size_t count, file* stream)

功能:從buff緩衝區中寫入資料到指定的檔案中

count:資料塊個數,即要讀取的資料大小為size的元素個素

返回值:寫入的總資料塊個數,有時候所寫入的資料不到資料塊大小,所以返回值為0

fseek

函式原型:int fseek(file *stream,long offset,int framewhere)

功能:重定位檔案內部的指標

引數:stream:檔案流指標

offset:指標的偏移量

framewhere:指標偏移起始位置,可以為以下形式

seek_set 既0 檔案開頭

seek_cur 既1 檔案當前位置

seek_end 既2 檔案結尾

返回值:成功返回0,否則返回非零值

fclose

函式原型:int fclose(file *stream)

功能:關閉乙個檔案流,使用fclose就可以把緩衝區內最後剩餘的資料輸出到磁碟檔案中,並釋放檔案指標和有關的緩衝區

引數:stream:檔案流指標

系統呼叫i/o介面

open

函式原型:int open(const char *pathname,int flags)

int open(const char *pathname,int flags,mode_t mode)

功能:用於開啟或建立檔案,在開啟或建立檔案時可以指定檔案的屬性及使用者的許可權等各種引數

引數:pathname:開啟檔案的路徑及檔名

flags:檔案開啟方式,可以為以下形式

o_rdonly:以唯讀方式開啟檔案

o_wronly:以只寫方式開啟檔案

o_rdwr:以讀寫方式開啟檔案

o_creat:如果改檔案不存在,就建立乙個新的檔案,並用第三個引數為其設定許可權

o_excl:如果使用o_creat時檔案存在,則返回錯誤訊息。這一引數可測試檔案是否存在。此時open是原子操作,防止多個程序同時建立同乙個檔案

o_noctty:使用本引數時,若檔案為終端,那麼該終端不會成為呼叫open()的那個程序的控制終端

o_trunc:若檔案已經存在,那麼會刪除檔案中的全部原有資料,並且設定檔案大小為0

o_nonblock: 如果pathname指的是乙個fifo、乙個塊特殊檔案或乙個字元特殊檔案,則此選擇項為此檔案的本次開啟操作和後續的i/o操作設定非阻塞方式

o_sync:使每次write都等到物理i/o操作完成

o_rsync:read 等待所有寫入同一區域的寫操作完成後再進行

mode:被開啟的檔案的訪問許可權,用3位八進位制數表示,最高位為所有者許可權,次高位為所屬組許可權,最低位為其他使用者許可權。1表示可執行,2表示可寫,4表示可讀

注:mode只有在有o_creat時有用,沒有的話可以忽略

返回值:成功返回乙個檔案描述符,失敗返回-1

read

函式原型:ssize_t read(int fd, void *buf, size_t count)

引數:fd:要讀取資料的檔案的描述符

count:讀取資料位元組數

返回值:成功返回所讀取的位元組數;0(讀到eof);失敗返回-1

write

函式原型:ssize_t read(int fd, void *buf, size_t count)

功能:從buf中寫入資料到指定的檔案中

引數:fd:要接受資料的檔案的描述符

count:寫入資料位元組數

返回值:成功返回所寫入的位元組數;失敗返回-1

lseek

函式原型:off_t lseek(int fd, off_t offset,int whence)

功能:用於在指定的檔案描述符中將將檔案指標定位到相應位置

引數:fd:檔案描述符

offset:指標的偏移量,單位是位元組,可正可負(向前移,向後移)

whence:指標偏移起始位置,可以為以下形式

seek_set 檔案開頭

seek_cur  檔案當前位置

seek_end  檔案結尾

返回值:成功返回當前偏移量,否則返回-1

close

函式原型:int close(int fd)

功能:用於關閉乙個被開啟的的檔案

引數:fd:檔案描述符

檔案流指標:c語言中使用檔案指標做為i/o的控制代碼。檔案流指標指向程序使用者區中的乙個被稱為file結構的資料結構。file結構包括乙個緩衝區和乙個檔案描述符。

檔案描述符:linux系統下開啟檔案就會獲得檔案描述符,在每個程序pcb中都含有乙份檔案描述符表,也就是乙個陣列,每乙個表項都有以惡搞我指標指向的開啟的檔案。而檔案描述符就是陣列的下標。

而檔案流指標是檔案描述符的封裝,檔案流指標中含有檔案描述符,其就是通過呼叫裡面的檔案描述符來完成對於檔案的相應操作。

基礎IO 標準庫IO介面 系統呼叫IO介面

標準庫io介面 fopen fclose fread fwrite fseek file fopen const char path,const char mode r唯讀開啟,檔案不存在報錯 r 讀寫開啟,檔案不存在報錯 w只寫,檔案不存在則建立 若存在則清空原內容 w 讀寫開啟,檔案不存在則建立...

系統呼叫IO介面

int open const char pathname,int flags,mode t mode 功能 開啟檔案 pathname 指定要開啟的檔名稱 flages 選項引數 必選引數 o rdonly 讀 o wrnoly 寫 o rdwr 只能選一 讀寫 可選引數 o creat 若檔案存在...

C標準庫I O和Linux檔案I O

c標準 i o庫函式在標頭檔案 stdio.h 中宣告,而 read write 等函式 檔案i o 在標頭檔案 unistd.h 中宣告 linux的訪問許可權分為 讀 寫 執行三種,可以使用ls l進行檢視 niesh niesh desktop ls lh 總用量 8.0k rw rw r 1...