檔案操作(流)

2021-08-21 19:55:56 字數 3606 閱讀 1789

開啟流:

fi le * fopen ( const char * filename, const char * mode );

第乙個引數 檔名 第二個引數 方式

關閉流

r代表read的簡寫,+代表可讀可寫,w代表write,b代表bit二進位制位,t代表text

r 開啟唯讀檔案,該檔案必須存在

r+ 開啟可讀可寫的檔案,該檔案必須存在(這裡的寫檔案是指將之前的檔案覆蓋

rt 開啟唯讀文字檔案,該文字必須存在

rt+ 讀寫開啟乙個文字檔案,允許讀和寫,該檔案必須存在(這裡的寫檔案是指將之前的檔案覆蓋

rb 唯讀開啟乙個二進位制檔案,,該文字必須存在

rb+ 讀寫開啟乙個文字檔案,允許讀和寫,該檔案必須存在(這裡的寫檔案是指將之前的檔案覆蓋

w 開啟只寫檔案,若檔案存在,則檔案長度清零,即檔案內容會消失,若檔案不存在則建立該檔案

w+ 開啟可讀寫檔案,若檔案存在,則檔案長度清零,即檔案內容會消失,若檔案不存在則建立該檔案(這裡的讀檔案,同樣需要使用rewind()函式)

wt 開啟只寫文字檔案,若檔案存在,則檔案長度清零,即檔案內容會消失,若檔案不存在則建立該檔案

wt+ 開啟可讀寫文字檔案,若檔案存在,則檔案長度清零,即檔案內容會消失,若檔案不存在則建立該檔案

wb 開啟只寫二進位制檔案,若檔案存在,則檔案長度清零,即檔案內容會消失,若檔案不存在則建立該檔案

wb+ 開啟可讀寫檔案,若檔案存在,則檔案長度清零,即檔案內容會消失,若檔案不存在則建立該檔案

a以附加的方式開啟只寫檔案,若檔案不存在,則建立檔案,存在則在檔案尾部新增資料,即追加內容

a+以附加的方式開啟可讀寫檔案,不存在則建立檔案,存在則寫入資料到檔案尾(這裡的讀檔案,同樣需要使用rewind()函式,但是寫檔案不需要rewind()函式,a是追加)

at二進位制資料的追加,不存在則建立,只能寫。

at+讀寫開啟乙個文字檔案,允許讀或在文字末追加資料(這裡的讀檔案,同樣需要使用rewind()函式,但是寫檔案不需要rewind()函式,a是追加)

ab二進位制資料的追加,不存在則建立,只能寫。

ab+讀寫開啟乙個二進位制檔案,不存在則建立,允許讀或在文字末追加資料(這裡的讀檔案,同樣需要使用rewind()函式,但是寫檔案不需要rewind()函式,a是追加)

檔案

在 stdio.h 中定義了乙個 file 結構。 (請不要把它和磁碟上的檔案混淆。)

file 是乙個資料結構,用於訪問乙個流。如果你啟用了幾個流,每個流都會對應乙個 file 結構。

為了操作流程,你呼叫一些合適的函式,並向函式傳遞乙個與這個流關聯的file引數。對於每乙個ansi c程式而言,至少開啟三個流:標準輸入(stdin)、標準輸出(stdout)、標準錯誤(stderr),他們都是乙個指向file結構的指標

標準輸入為:鍵盤裝置

標準輸出為:終端或螢幕。

i/o流

流被分為兩種: 文字流 和 二進位製流 。

文字流在不同的系統中實現不太相同。

二進位製流中的位元組完全是安裝程式編寫他們形式寫入到檔案和裝置中。而且完全根據他們從檔案或裝置讀取的形式讀入到程式。

i/o常量

在 stdio.h 中定義了很多i/o常量

eof -檔案結束標誌,表示檔案到了結尾

fopen_max - 乙個程式最多開啟檔案數。

filename_max - 檔名的最大長度

io函式

程式必須為同時處於活動狀態的每個檔案宣告乙個指標變數,其型別為: file* ,這個指標指向乙個結構,當它處於活動狀態時由流使用。

流通過fopen函式開啟,開啟流的時候,必須指定需要訪問的檔案或者裝置已經訪

問的方式。fopen函式和作業系統去驗證檔案或者裝置確實存在,驗證訪問方式,然後初始化file結構。

根據需要對檔案進行讀取和寫入。

最後,fclose函式可以關閉流。關閉乙個流可以防止與它相關的檔案被再次訪問,

保證任何儲存於緩衝區中的資料被正確的寫入檔案中。

以上函式的用法:

perror

void perror ( const char * str );

perror 以一種簡單、統一的方式報告錯誤。ansi c函式庫的許多函式呼叫作業系統來完成某些任務,i/o函式尤其如此,當作業系統按照要求執行某些任務的時候就可能會失敗,例如:嘗試開啟乙個根本就不存在的檔案,讀取內容。作業系統的做法就是發生錯誤的時候,能夠提示發生了錯誤。標準庫函式提供了乙個全域性的變數errno (在errno.h中定義),來記錄錯誤的錯誤碼,交給使用者程式,用於提示錯誤的準確原因。

如果perror函式的引數str指標不是null,並指向乙個非空的字串,perror函式先列印這個字串,然後跟著輸出乙個分號和乙個空格,接著輸出錯誤資訊提示。

errno這個值只有在呼叫庫函式的時候發生問題了,才能會被設定。而函式調成功之後也不會修改,所以不能使用errno來判斷乙個函式是否執行成功。

exit

exit用於終止乙個程式的執行。return是終止乙個函式的執行

///

/////程式1

int fun1()

int main()

////////程式2

int fun2()

int main()

程式1列印ing… 程式2無輸出

STL 檔案操作 流檔案操作

在c 中,有乙個stream這個類,所有的i o都以這個 流 類為基礎的,包括我們要認識的檔案i o,stream這個類有兩個重要的運算子 1 插入器 向流輸出資料。比如說系統有乙個預設的標準輸出流 cout 一般情況下就是指的顯示器,所以,cout write stdout n 就表示把字串 wr...

C 檔案流操作

include stdafx.h include include include include include using namespace std void writecharsettofile const string filename void outputfile const strin...

C 檔案流操作

c 的檔案流本質是利用了乙個buffer中間層,有點類似標準輸出和標準輸入一樣。需要包含的標頭檔案 fstream.h 需要的命名空間 std fstream提供了三個類,用來實現c 對檔案的操作,以下對其做個簡要概述。1.ifstream類 2.ofstream類 3.fstream類 支援的檔案...