檔案的讀寫操作

2021-05-02 14:48:46 字數 1391 閱讀 3813

說明:首先以讀寫方式開啟(r+   w+   a+都可以,不過要注意讀寫位置指標分別指向檔案頭、檔案頭、檔案尾),一次讀乙個字元(此時讀寫位置指標指向此位元組後面,判斷後,若要轉換,移動讀寫位置指標fseek(fp,-1l,seek_cur),再寫入,由於在c中規定:  

以上述三種方式開啟檔案,既可讀又可寫,但:在沒有插入fseek()或rewind()的情況下,寫不可以直接跟在讀後面,在沒有插入fseek()rewind()或碰到檔案結束的情況下,讀不可以直接跟在寫後面。所以要轉換讀寫狀態。

因為在c語言中對流式檔案進行操作時,開啟檔案後,有乙個讀寫位置指標,記錄的是讀寫時在檔案中的位置,其初始狀態與開啟方式有關。r、r+方式開啟時,它指向檔案頭;w、w+方式開啟時,也指向檔案頭(注意:雖然讀寫位置指標指向相同,但這兩種方式對檔案是否已存在處理不同,r、r+開啟時,只有當檔案已存在才能正確開啟,若檔案不存在,出錯,而w、w+方式開啟時,檔案不存在,則生成該檔案,若檔案存在,刪除後再重新生成),a,a+方式開啟時,讀寫位置指標指向檔案尾,若檔案不存在,看具體的系統,在turbo   c   中與w、w+方式相同,即生成新檔案。  

r   唯讀,w   只寫   a   追加,也是只寫  

r+   w+   a+既可讀又可寫,但:  

在沒有插入fseek()或rewind()的情況下,寫不可以直接跟在讀後面,在沒有插入fseek()rewind()或碰到檔案結束的情況下,讀不可以直接跟在寫後面。所以,想同時對檔案進行讀寫,必須在讀寫狀態轉換時呼叫fseek()或rewind()函式。   

rewind(file   *fp)是將fp所指向檔案中的讀寫位置指標移動到檔案頭  

fseek(file   *fp,   long   offset,   int   i)是在檔案中隨意移動讀寫位置指標  

int   i是移動基準點,   在stdio.h中定義了三個巨集  

seek_set   檔案頭  

seek_cur   當前位置  

seek_end   檔案尾  

long   offset     相對於基準點的位移量,單位為位元組數,  

當》0   向前,即從基準點向檔案尾方向移動offset個位元組數,  

=0,   其實就是移動到基準點  

<0       向後,即從基準點向檔案頭方向移動offset個位元組數

在使用函式進行讀寫時,位置指標指向被讀寫資料後的位元組,你讀乙個位元組,判斷後,要轉換則移動-1l,再寫乙個轉換後的字元到檔案中去就行了  

fseek(fp,-1l,seek_cur);/*向前移動1個位元組,同時也就完成的讀寫狀態的變換*/  

fputc(ch,fp);/*寫檔案,乙個字元*/  

fseek(fp,0l,seek_cur);/*寫完後,要改為讀操作了,轉換讀寫狀態,並不移動*/  

檔案的讀寫操作

1.讀寫字元函式fgetc fputc int fgetc file stream 將流指標指向的檔案中的乙個字元輸出。若檔案指標指到檔案尾,會遇到檔案結束標誌eof 1 我們可以通過檢查該函式的返回值是否是 1來判斷是否已讀到檔案尾。int fputc int ch,file stream 將字元...

檔案的讀寫操作

1.read 會一次性讀取檔案的全部內容。2.readline 每次讀取一行,並且自帶換行功能,每一行末尾會讀到 n。3.readlines 一次性以行的形式讀取檔案的所有內容並返回乙個list,需要去遍歷讀出來。4.file控制代碼是乙個可迭代的物件因此,可以迴圈讀取檔案中的內容,每次讀一行。a ...

檔案的讀寫操作

檔案的讀操作 open 第乙個引數必須有,表示檔案的絕對路徑或者相對路徑 第二個引數mode,表示檔案開啟的方式 r 讀 w 寫 a 追加 r r w 可讀可寫,檔案若不存在就報錯 ioerror w w r 可讀可寫,檔案若不存在就建立 a a r 可追加可寫,檔案若不存在就建立 對應的,如果是二...