c讀寫檔案
使用 fopen(檔名,訪問模式) 函式來開啟檔案,一般有getc/putc , fgets/fputs , fscanf/fprintf , fread/fwrite 四大家族來讀寫檔案。
關於檔案訪問模式有如下的選擇:
訪問模式說明r
以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
rb以二進位制格式開啟乙個檔案用於唯讀。檔案指標將會放在檔案的開頭。這是預設模式。
wb以二進位制格式開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
r+開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。
w+開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a+開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
rb+以二進位制格式開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。
wb+以二進位制格式開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab+以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。
1、getc/putc家族讀寫檔案
int getc(file *stream) :從檔案讀取字元, 一次讀取乙個字元,並把位置識別符號往前移動。
引數:指向 file 物件的指標
返回值:以 int 的形式返回讀取的字元,如果到達檔案末尾或發生讀錯誤,則返回 eof。
int putc(int c , file *stream):將指定的字元輸出到指定的輸出流中,並把位置識別符號往前移動。
引數:c –要被寫入的字元,該字元以其對應的 int 值進行傳遞。
stream –指向 file 物件的指標
返回值:以 int 的形式返回寫入的字元,如果發生錯誤則返回 eof
使用示例:
#include
//讀乙個字元
intmain
(int argc,
char
*ar**)
else
//使用完,關閉檔案
fclose
(p);
}return0;
}//寫乙個字元
intmain
(int argc,
char
*ar**)
else
return0;
}
2、fgets/fputs家族讀寫檔案
char *fgets(char *s, int size, file *stream); 按行讀取,當讀到檔案尾時結束,返回null。
引數:s –這是指向乙個字元陣列的指標,該陣列儲存了要讀取的字串。
size –這塊記憶體的大小,
stream –fopen返回的檔案指標
返回值:如果成功,該函式返回相同的 str 引數。如果為空或者錯誤返回空指標
int fputs(char *s, file *stream);按行寫入。
引數:s –要寫入的內容
stream –fopen返回的檔案指標
返回值:寫入成功返回非0,寫入失敗返回eof。
使用示例:
//讀
intmain
(int argc,
char
*ar**)
else
;fgets
(s,sizeof
(s), p)
;printf
("%s"
,s);
fclose
(p);
}return0;
}//寫
intmain
(int argc,
char
*ar**)
else
return0;
}
3、fscanf/fprintf家族讀寫檔案
int fscanf(file *stream, const char *format, …):fscanf與scanf用法基本一致,fscanf是從乙個檔案讀取輸 入,scanf是從鍵盤讀取輸入
引數:stream –指向 file 物件的指標
format –格式化輸入
返回值:該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof。
int fprintf(file *stream, const char *format, …)
返回值:返回寫入的字元總數,否則返回乙個負數。
使用示例:
//讀
intmain
(void
)fclose
(p);
return0;
}//寫
intmain()
;int i;
for(i =
0; i <
10; i++
)fclose
(p);
return0;
}
4、fread/fwrite家族讀寫檔案
size_t fread(void *ptr, size_t size, size_t nmemb, file *stream):從檔案流中讀資料
引數:ptr– 這是指向帶有最小尺寸 size*nmemb 位元組的記憶體塊的指標。
**size** -- 這是要讀取的每個元素的大小,以位元組為單位。
nmemb– 要讀nmemb個資料項,每個資料項size個位元組。
stream– 這是指向 file 物件的指標,該 file 物件指定了乙個輸入流。
返回值:成功讀取的資料項總數
size_t fwrite(const void *ptr, size_t size, size_t nmemb, file *stream):向指定的檔案中寫入資料
引數:ptr– 這是指向要被寫入的元素陣列的指標。
size– 這是要被寫入的每個元素的大小,以位元組為單位。
nmemb– 要讀nmemb個資料項,每個資料項size個位元組。
stream– 這是指向 file 物件的指標,該 file 物件指定了乙個輸出流。
返回值:成功寫入的資料項總數
使用示例:
//寫
intmain
(void);
file *p =
fopen
("/users/devin/desktop/a.dat"
,"wb");
fwrite
(&st,
sizeof
(st),1
, p)
;fclose
(p);
return0;
}//讀
intmain
(void
)
C語言檔案讀寫
include include define maxlen 1024 int main file outfile,infile outfile fopen 1.bmp wb infile fopen c 1.bmp rb unsigned char buf maxlen int rc while r...
C語言讀寫檔案
c語言庫函式包括檔案的開啟 關閉 讀 寫 定位等各種操作 要操作檔案,首先要宣告乙個檔案指標變數file fp 呼叫fopen開啟檔案 檔案指標名 fopen 檔名,使用檔案方式 ps 這裡檔案路徑必須是帶雙斜槓 其中,1.檔案使用方式 意 義 rt 唯讀開啟乙個文字檔案,只允許讀資料 wt 只寫開...
C語言檔案讀寫
讀取乙個完整的檔案 include include int main 如果檔案錯誤,退出1 獲得檔案大小 fseek pfile 0 seek end 指標移到檔案末位 lsize ftell pfile 獲得檔案長度 rewind pfile 函式rewind 把檔案指標移到由stream 流 指...