C檔案讀寫

2021-07-26 23:35:07 字數 3427 閱讀 8396

檔案讀寫,前邊我們說過ios的,今天來說說c的

可以使用fopen( )函式來建立乙個新的檔案或者開啟乙個已有的檔案,這個呼叫會初始化型別file的乙個物件,型別file包含了所有用來控制流的必要的資訊。下面是這個函式呼叫的原型:

file

*fopen(

const

char

* __restrict

__filename,

const

char

* __restrict

__mode

在這裡,filename是字串,用來命名檔案,訪問模式mode的值可以是下列值中的乙個:

模式描述

r開啟乙個已有的文字檔案,允許讀取檔案。

w開啟乙個文字檔案,允許寫入檔案。如果檔案不存在,則會建立乙個新檔案。在這裡,您的程式會從檔案的開頭寫入內容。

a開啟乙個文字檔案,以追加模式寫入檔案。如果檔案不存在,則會建立乙個新檔案。在這裡,您的程式會在已有的檔案內容中追加內容。

r+開啟乙個文字檔案,允許讀寫檔案。

w+開啟乙個文字檔案,允許讀寫檔案。如果檔案已存在,則檔案會被截斷為零長度,如果檔案不存在,則會建立乙個新檔案。

a+開啟乙個文字檔案,允許讀寫檔案。如果檔案不存在,則會建立乙個新檔案。讀取會從檔案的開頭開始,寫入則只能是追加模式。

如果處理的是二進位制檔案,則需使用下面的訪問模式來取代上面的訪問模式:

"rb"

,"wb"

,"ab"

,"rb+"

,"r+b"

,"wb+"

,"w+b"

,"ab+"

,"a+b"

為了關閉檔案,請使用 fclose( ) 函式。函式的原型如下:

intfclose

(file

*fp

);

如果成功關閉檔案,fclose( )函式返回零,如果關閉檔案時發生錯誤,函式返回eof。這個函式實際上,會清空緩衝區中的資料,關閉檔案,並釋放用於該檔案的所有記憶體。eof 是乙個定義在標頭檔案stdio.h中的常量。

c 標準庫提供了各種函式來按字元或者以固定長度字串的形式讀寫檔案。

下面是把字元寫入到流中的最簡單的函式:

int

fputc

(intc,

file

*fp

);

函式fputc()把引數 c 的字元值寫入到 fp 所指向的輸出流中。如果寫入成功,它會返回寫入的字元,如果發生錯誤,則會返回eof。您可以使用下面的函式來把乙個以 null 結尾的字串寫入到流中:

int

fputs

(const

char*s

,file

*fp

);

函式fputs()把字串s寫入到 fp 所指向的輸出流中。如果寫入成功,它會返回乙個非負值,如果發生錯誤,則會返回eof。您也可以使用int fprintf(file *fp,const char *format, ...)函式來寫把乙個字串寫入到檔案中。嘗試下面的例項:

注意:請確保您有可用的/tmp目錄,如果不存在該目錄,則需要在您的計算機上先建立該目錄。

#include

main

()

當上面的**被編譯和執行時,它會在 /tmp 目錄中建立乙個新的檔案test.txt,並使用兩個不同的函式寫入兩行。接下來讓我們來讀取這個檔案。

下面是從檔案讀取單個字元的最簡單的函式:

int

fgetc

(file

*fp

);

fgetc()函式從 fp 所指向的輸入檔案中讀取乙個字元。返回值是讀取的字元,如果發生錯誤則返回eof。下面的函式允許您從流中讀取乙個字串:

char

*fgets

(char

*buf

,intn,

file

*fp

);

函式fgets()從 fp 所指向的輸入流中讀取 n - 1 個字元。它會把讀取的字串複製到緩衝區buf,並在最後追加乙個null字元來終止字串。

如果這個函式在讀取最後乙個字元之前就遇到乙個換行符 '\n' 或檔案的末尾 eof,則只會返回讀取到的字元,包括換行符。您也可以使用int fscanf(file *fp, const char *format, ...)函式來從檔案中讀取字串,但是在遇到第乙個空格字元時,它會停止讀取。

#include

main

()

當上面的**被編譯和執行時,它會讀取上一部分建立的檔案,產生下列結果:

1

:this2:

istesting

forfprintf

...3

:this

istesting

forfputs

...

首先,fscanf()方法只讀取了this,因為它在後邊遇到了乙個空格。其次,呼叫fgets()讀取剩餘的部分,直到行尾。最後,呼叫fgets()完整地讀取第二行。

下面兩個函式用於二進位制輸入和輸出:

size_t

fread

(void

*ptr

,size_t

size_of_elements

,size_t

number_of_elements

,file

*a_file

);size_t

fwrite

(const

void

*ptr

,size_t

size_of_elements

,size_t

number_of_elements

,file

*a_file

);

這兩個函式都是用於儲存塊的讀寫 - 通常是陣列或結構體。

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...