C語言文件讀寫操作


前言
上一章節(jié)主要講解結(jié)構(gòu)體內(nèi)存對齊問題,本章節(jié)主要講解C語言文件操作,全面解析C語言文件操作。

C語言文件
通常,文件用于在計算機(jī)中存儲用戶數(shù)據(jù)。換句話說,計算機(jī)使用文件存儲數(shù)據(jù)。我們可以如下定義:文件是存儲在輔助存儲器(如計算機(jī)的haddisk)中的數(shù)據(jù)的集合。
C語言支持兩種類型的文件,它們?nèi)缦拢?/p>
文本文件(或)ASCII文件
二進(jìn)制文件
文本文件(或)ASCII文件
包含數(shù)字,字母和符號等數(shù)據(jù)的ASCII碼的文件稱為文本文件(或)ASCII文件。
二進(jìn)制文件
含字節(jié)(0和1)形式的數(shù)據(jù)的文件稱為二進(jìn)制文件。通常二進(jìn)制文件是文本文件的編譯版本。

C語言文件操作
以下是用C語言編寫的文件上執(zhí)行的操作.
創(chuàng)建(或)打開文件
從文件讀取數(shù)據(jù)
將數(shù)據(jù)寫入文件
關(guān)閉文件
以上所有操作都是使用C語言中可用的文件處理功能執(zhí)行的。我們將討論文件處理功能。

打開文件
要創(chuàng)建新文件或打開現(xiàn)有文件,我們需要創(chuàng)建FILE類型的文件指針。以下是用于創(chuàng)建文件指針的示例代碼
FILE *f_ptr ;
我們使用預(yù)定義的方法fopen()創(chuàng)建新文件或打開現(xiàn)有文件。可以使用不同的模式打開文件。考慮以下代碼:
FILE *f_ptr ; f_ptr = fopen("abc.txt", "w") ;
上面的示例代碼創(chuàng)建一個名為abc.txt的新文件(如果該文件不存在),否則將以寫入模式打開。在C語言中,可以使用不同的模式來打開文件,這些模式如下所示:

注意
二進(jìn)制文件讀寫請使用rb,wb,ab,rb +,wb +和ab +
w方式打開文件,文件不存在具有創(chuàng)建文件的功能,文件存在清空文件內(nèi)容打開
a方式打開文件,追加模式打開文件,不清空文件中的數(shù)據(jù)

文件讀寫
C語言存在以下文件讀寫操作。
fgetc()+fputc():字符方式讀寫
fgets()+fputs():字符串方式讀寫
fscanf()+fprintf():格式化讀寫
fread()+fwrite():字節(jié)流讀寫
C語言中的字符讀寫方式示例程序

注意:一般文件打開, 是要判斷打開文件是否成功的,因?yàn)槠鶈栴}這里就省略掉
C語言中的字符串讀寫方式示例程序

注意:字符串讀寫,會為讀取的內(nèi)容末尾加上'\n'
C語言中的格式化讀寫方式示例程序

格式化讀寫其實(shí)是一種表格數(shù)據(jù)
C語言中的字節(jié)流讀寫方式示例程序

文本文件中顯示的內(nèi)容是亂碼,很正常的情況,能成功讀寫出來即可。

文件指針操作函數(shù)
fseek函數(shù)
函數(shù)原型:int fseek(FILE *stream, long offset, int pos);
stream:文件指針。
offset:偏移量。
pos:指偏移方式。有如下三種值可選:
SEEK_SET 從距文件開頭offset 位移量為新的讀寫位置.
SEEK_CUR 以目前的讀寫位置往后增加offset 個位移量.
SEEK_END 將讀寫位置指向文件尾后再增加offset 個位移量.
說明:當(dāng)pos值為SEEK_CUR 或SEEK_END 時, 參數(shù)offset 允許負(fù)
給出兩種比較特別的使用方式
將文件指針移動到開頭:fseek(fd, 0, SEEK_SET);
將文件指針移動到結(jié)尾:fseek(fd, 0, SEEK_END);
返回值:調(diào)用成功返回0,失敗返回-1,errno會存放錯誤代碼。
ftell函數(shù)
函數(shù)原型:long ftell(FILE *stream);
返回值:文件指針相對于文件開頭的偏移量。
rewind函數(shù)
函數(shù)原型:void rewind(FILE *stream);
feof函數(shù)
函數(shù)原型:int feof(FILE *stream);
返回值:如果已經(jīng)到達(dá)文件的結(jié)尾(已經(jīng)將文件的最后一個字符都讀走了),返回0,否則返回非0數(shù)字。
EOF
是文本文件結(jié)束的標(biāo)志。在文本文件中,數(shù)據(jù)


尾言
作業(yè):把以下表格數(shù)據(jù)存儲到文件(信息數(shù)可少量,詞條需齊全)

哪里有什么老天的眷顧,所謂的幸運(yùn)和成功都源自你自身的努力和付出。請記住,你現(xiàn)在多走的每一步都在拉開著你和別人的差距。要做,就做生活的強(qiáng)者。
好了今天的知識到這里就結(jié)束了!如果有學(xué)到知識的同學(xué)們,可以留言學(xué)到了哦!如果可以的話也是可以一鍵三連,關(guān)注加轉(zhuǎn)發(fā)和點(diǎn)贊。
