概述
1.乙個c檔案是乙個位元組流或二進位製流,它把資料看作是一連串的字元(位元組),而不考慮記錄的界限。在c語言中對檔案的訪問是以字元(位元組)為單位的。
(注:流式檔案 —— 輸出時不會自動增加回車換行符以作為記錄結束的標誌,輸入時不以回車換行符作為記錄的間隔)
2.ansi c標準使用緩衝檔案系統處理文字檔案和二進位制檔案。每個被使用的檔案都在記憶體中開闢乙個區,用來存放檔案的有關資訊,這些資訊是儲存在乙個結構體變數中的,該結構體型別是由系統定義的,取名為file
。
開啟和關閉檔案
讀寫之前開啟檔案,使用完畢後關閉檔案
fopen函式
1.函式原型:file *fopen(const char *filename,const char *mode)
2.呼叫方式:
file *fp;
fp=fopen
(檔名,開啟方式)
;
3.若開啟成功:返回乙個指向file型別結構體變數的指標
若開啟出錯:返回乙個空指標值null(null在stdio.**件中被定義為0)
建議用以下方法開啟乙個檔案:
file *fp;if(
(fp=
fopen
("myfile"
,"mode"))
==null
)
4.fopen函式原型中的mode是開啟檔案的方式,具體如下表:
5.向計算機輸入文字檔案時,計算機將回車換行符轉換為乙個換行符,在輸出時把換行符轉換成為回車和換行兩個字元。而在用二進位制檔案時,不進行這種轉換,在記憶體中的資料形式與輸出到外部檔案的資料形式完全一致。
6.在程式開始執行時,系統自動開啟三個標準檔案:標準輸入、標準輸出、標準出錯輸出。通常這三個檔案始終與終端相連,因此我們所用到的從終端輸入或輸出都不需要開啟終端檔案。系統自動定義了3個指標檔案:stdin,stdout,stderr,分別指向終端輸入、終端輸出、標準出錯輸出(從終端輸出)。如果程式指定要從stdin所指的檔案輸入資料,就是指從終端鍵盤輸入資料。
fclose函式
1.函式原型:int fclose(file *fp)
2.呼叫形式:
fclose
(fp)
;
2.若執行了關閉操作則返回0,否則返回eof(-1)。【注】eof不是可輸出字元
讀寫檔案
fread函式和fwrite函式
作用:fread和fwrite函式一般用於二進位制檔案的輸入輸出,因為它們是按照資料塊的長度來處理輸入輸出的,在字元發生轉換的情況下結果可能會與設想的有偏差。
1.函式原型:
size_t __cdecl fread
(void
* __restrict__ _dstbuf,size_t _elementsize,size_t _count,file * __restrict__ _file)
;
size_t __cdecl fwrite
(const
void
* __restrict__ _str,size_t _size,size_t _count,file * __restrict__ _file)
;
2.呼叫形式:
fread
(檔案中的資料被讀出後的存放位址,讀出一項的位元組數,讀出幾項,檔案指標)
;
fwrite
(將要寫入檔案的資料的存放位址,寫入一項佔的位元組數,寫入幾項,檔案指標)
;
3.若fread或fwrite呼叫成功,則函式返回值為讀出或寫入的項數
例子:
file *fp_w,
*fp_r;
int s[size]=;
if((fp_w=
fopen
("myfile"
,"wb"))
==null
)//利用返回值判斷是否成功執行
for(
int i=
0;ifclose
(fp_w);if
((fp_r=
fopen
("myfile"
,"rb"))
==null
)for
(int i=
0;ifclose
(fp_r)
;
fprintf函式和fscanf函式
作用:fprintf函式和fscanf函式是格式化讀寫函式,和printf,scanf作用相仿,只是前者讀寫物件是磁碟檔案,後者是終端。
1.函式原型:
int __cdecl fscanf
(file * __restrict__ _file,
const
char
* __restrict__ _format,...);
int __cdecl fprintf
(file * __restrict__ _file,
const
char
* __restrict__ _format,...);
2.呼叫形式:
fscanf
(檔案指標,格式字串,輸入列表)
;//從檔案按格式讀出
按照規定格式將磁碟檔案上的資料送給輸入列表中對應的變數。
fprintf
(檔案指標,格式字串,輸出列表)
;//按格式寫入檔案
將輸出列表中變數的值按照格式字串規定的格式輸出到fp指向的檔案上。
3.fscanf若正常執行,返回的是從檔案實際讀取的變數個數,出錯或者到結尾返回eof。
fprintf若正常執行,會返回寫入檔案的位元組數,否則返回負數。
【注】在磁碟與記憶體頻繁交換資料的情況下,盡量不使用fprintf和fscanf.
fgets函式和fputs函式
作用:fgets用於從指定檔案讀入乙個字串,fputs用於向指定檔案輸出乙個字串
fgets
(str,n,fp)
;//從fp指向的檔案輸入n-1個字元,然後在最後加乙個'\0'字元,然後後存至字元陣列str,最後返回str首位址
futs
(str,fp)
;//將字串輸出到fp指向的檔案,輸出成功返回0,失敗返回eof
fputc函式和fgetc函式
作用:fputc函式用於把乙個字元寫到磁碟檔案,fgetc函式用於從指定檔案讀入乙個字元
fputc
(ch,fp)
;//若輸出成功,返回ch,否則返回eof(-1)
ch=
fgetc
(fp)
;//若遇到檔案結束符,返回eof
c 中檔案的開關讀寫基本操作
目錄 今天寫資料結構的時候涉及到了檔案的操作,因為已經碰到好多次了而我總是對這部分不太熟悉,於是索性就來寫個簡單的應用總結吧。一 開啟檔案 二 關閉檔案 三 讀寫檔案 文字檔案和二進位制檔案 1 文字檔案 2 二進位制檔案 3 讀寫資料塊 四 檢測eof 五 檔案定位 還有更多的細節就不在這裡深究了...
c語言檔案讀寫操作
檔案讀取操作 file fp char fname d printf s n fname fp fopen fname,r fscanf fp,d buf printf d buf 0 fclose fp fread,與fwrite是binary stream input output二進位製流的輸...
C語言檔案讀寫操作
標頭檔案 include include include include 用於生成隨機數 建立檔案指標 file fp 檢測檔案是否開啟成功 if fp fopen f52.txt w null 如果檔案不存在,則會新建。w 即設定操作為 write 寫操作 隨機的產生,設定時間種子 srand t...