Linux標準檔案IO操作
檔案IO就是對檔案的輸入輸出。對於linux來說,linux的一切都是檔案,包括資料夾。
-:普通檔案
d:目錄檔案
c:字元裝置檔案
b:塊裝置檔案
p:管道檔案
l:連結檔案
標準檔案IO(帶快取):【在標頭檔案stdio.h中】
1. 開啟檔案
fopen
FILE *fopen(const char *path, const char *mode);
a、FILE檔案指標
b、const char *path要開啟的檔案路徑
c、const char *mode開啟檔案方式(許可權)
mode說明:
r 開啟只讀檔案,該檔案必須存在。
r+ 開啟可讀寫的檔案,該檔案必須存在。
rb+ 讀寫開啟一個二進位制檔案,只允許讀寫資料。
rt+ 讀寫開啟一個文字檔案,允許讀和寫。
w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。
w+ 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。
a 以附加的方式開啟只寫檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾,即檔案原先的內容會被保留。(EOF符保留)
a+ 以附加方式開啟可讀寫的檔案。若檔案不存在,則會建立該檔案,如果檔案存在,寫入的資料會被加到檔案尾後,即檔案原先的內容會被保留。 (原來的
例:
//開啟檔案
FILE*file=NULL;//定義一個檔案指標
file = fopen("./test.txt","w+");//fopen返回開啟檔案的指標
2、讀寫檔案
fread
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
引數說明:
size_t:讀了多少次
void *ptr:讀到的資料存放位置
size_t size:一次讀多少個位元組
size_t nmemb:讀多少次
FILE *stream:檔案指標,從這個檔案中讀
//讀檔案
char buf[128];
ret =
fwrite
size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
引數與fread類似.
//把wbuf內容寫入檔案
char wbuf[128];
scanf("%s", wbuf);
int ret = fwrite(wbuf, strlen(wbuf),1,file);//從wbuf寫資料到file,寫一次,每次寫wbuf資料的長度
引數說明:
FILE *stream:要偏移的檔案指標
long offset:偏移量
int whence:參照物(有三個參照物,檔案頭(SEEK_SET),檔案尾(SEEK_END),當前位置(SEEK_CUR))
也就是將檔案指標移動到離參照物(頭,尾,當前)偏移量的地方。
//把檔案指標移動到檔案開頭
fseek(file,0, SEEK_SET);//以頭為參照物移動0位元組
long ftell(FILE *stream); 計算偏移量(計算檔案長度)返回值是long int型
//移動檔案指標到檔案尾
int ret = fseek(file,0, SEEK_END);
//計算偏移量--檔案大小
long size = ftell(file);
把檔案指標移到檔案頭 相當於 fseek(file,0, SEEK_SET);