C檔案讀寫(一)

2021-09-25 12:01:26 字數 1772 閱讀 4841

刷牛客網的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...