刷牛客網的c++專項練習時,遇到c檔案讀寫的題目基本都是白給,這塊知識是盲區。
c語言檔案讀寫相關函式及檔案指標file *的定義都在stdio.h標頭檔案裡,以下所有操作都需要#include
一、fopen函式
file *fopen( const char *name,const char *mode )
fopen()返回的是乙個檔案指標,第乙個引數是檔名,第二個引數是開啟模式,常見模式有:
模式描述
r開啟乙個已有的文字檔案,允許讀取檔案。
w開啟乙個文字檔案,允許寫入檔案。如果檔案不存在,則會建立乙個新檔案。在這裡,您的程式會從檔案的開頭寫入內容。如果檔案存在,則該會被截斷為零長度,重新寫入。
a開啟乙個文字檔案,以追加模式寫入檔案。如果檔案不存在,則會建立乙個新檔案。在這裡,您的程式會在已有的檔案內容中追加內容。
r+開啟乙個文字檔案,允許讀寫檔案。
w+開啟乙個文字檔案,允許讀寫檔案。如果檔案已存在,則檔案會被截斷為零長度,如果檔案不存在,則會建立乙個新檔案。
a+開啟乙個文字檔案,允許讀寫檔案。如果檔案不存在,則會建立乙個新檔案。讀取會從檔案的開頭開始,寫入則只能是追加模式。
如果文字是二進位制格式,需要在模式後加"b"
"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"
file *fp;
//以唯讀模式開啟已有的文字/二進位制檔案
fp = fopen("txt_file", "r")
fp = fopen("bin_file", "rb")
//以寫入模式開啟文字/二進位制檔案
fp = fopen("txt_file", "w")
fp = fopen("bin_file", "wb")
如果以唯讀模式開啟的檔案不存在,則返回null,表示開啟失敗
二、flose函式
int flose(file *stream),返回0表示關閉成功,否則返回eof
三、feof函式
int feof(file * stream),偵測是否讀取到了檔案尾,如果到了檔案尾返回非零整數,其他情況返回0
四、ftell
long ftell(file * stream),取得檔案流目前的讀寫位置,當呼叫成功時則返回目前的讀寫位置,若有錯誤則返回-1
五、fseek
int fseek(file * stream,long offset,int whence),用來移動檔案流的讀寫位置
where取值
seek_set從距檔案開頭offset位移量為新的讀寫位置
seek_cur 以目前的讀寫位置往後增加offset個位移量
seek_end將讀寫位置指向檔案尾後再增加offset個位移量
//將fp移動到距離開頭100位元組處
fseek(fp, 100l, seek_set);
//將fp從當前位置向後移動50位元組
fseek(fp, 50l, seek_cur);
//將fp從檔案尾回移50位元組
fseek(fp, -50l, seek_end);
c 檔案讀寫 文字讀寫
include int main else return 0 格式 intfscanf file stream,constchar format,返回值 如果成功,該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof 引數1 file stream 檔案指標 引數2 cons...
C 檔案讀寫
原文 http www.vckbase.com document viewdoc id 1439 原作 john peregrine file i o using c 序論 我曾發表過檔案輸入輸出的文章,現在覺得有必要再寫一點。檔案 i o 在c 中比烤蛋糕簡單多了。在這篇文章裡,我會詳細解釋asc...
C 讀寫檔案
1 使用filestream讀寫檔案 檔案頭 using system using system.collections.generic using system.text using system.io 讀檔案核心 byte bydata new byte 100 char chardata ne...