C語言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼
大家知道C語言怎么以數(shù)據(jù)塊的形式讀寫文件嗎?下面小編為大家整理了C語言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼,希望能幫到大家!
fgets() 有局限性,每次最多只能從文件中讀取一行內(nèi)容,因?yàn)?fgets 遇到換行符就結(jié)束讀取。如果希望讀取多行內(nèi)容,需要使用 fread 函數(shù);相應(yīng)地寫入函數(shù)為 fwrite。
fread() 函數(shù)用來從指定文件中讀取塊數(shù)據(jù)。所謂塊數(shù)據(jù),也就是若干個(gè)字節(jié)的數(shù)據(jù),可以是一個(gè)字符,可以是一個(gè)字符串,可以是多行數(shù)據(jù),并沒有什么限制。fread() 的原型為:
size_t fread ( void *ptr, size_t size, size_t count, FILE *fp );
fwrite() 函數(shù)用來向文件中寫入塊數(shù)據(jù),它的原型為:
size_t fwrite ( void * ptr, size_t size, size_t count, FILE *fp );
對參數(shù)的說明:
ptr 為內(nèi)存區(qū)塊的指針,它可以是數(shù)組、變量、結(jié)構(gòu)體等。fread() 中的 ptr 用來存放讀取到的數(shù)據(jù),fwrite() 中的 ptr 用來存放要寫入的數(shù)據(jù)。
size:表示每個(gè)數(shù)據(jù)塊的字節(jié)數(shù)。
count:表示要讀寫的數(shù)據(jù)塊的塊數(shù)。
fp:表示文件指針。
理論上,每次讀寫 size*count 個(gè)字節(jié)的數(shù)據(jù)。
size_t 是在 stddef.h 頭文件中使用 typedef 定義的數(shù)據(jù)類型,表示無符號(hào)整數(shù),也即非負(fù)數(shù),常用來表示數(shù)量。
返回值:返回成功讀寫的塊數(shù),也即 count。如果返回值小于 count:
對于 fwrite() 來說,肯定發(fā)生了寫入錯(cuò)誤,可以用 ferror() 函數(shù)檢測。
對于 fread() 來說,可能讀到了文件末尾,可能發(fā)生了錯(cuò)誤,可以用 ferror() 或 feof() 檢測。
【示例】從鍵盤輸入一個(gè)數(shù)組,將數(shù)組寫入文件再讀取出來。
#include#define N 5int main(){ /pic/pic/pic/pic/pic/pic/p>
運(yùn)行結(jié)果:
23 409 500 100 222↙
23 409 500 100 222
fwrite()/fread() 函數(shù)直接操作字節(jié),建議使用二進(jìn)制方式打開文件。請閱讀《C語言中文本文件與二進(jìn)制文件的區(qū)別》了解更多。
打開 D:demo.txt,發(fā)現(xiàn)文件內(nèi)容根本無法閱讀。這是因?yàn)槲覀兪褂?quot;rb+"方式打開文件,數(shù)據(jù)以二進(jìn)制形式寫入文件,一般無法閱讀。
數(shù)據(jù)寫入完畢后,位置指針在文件的末尾,要想讀取數(shù)據(jù),必須將文件指針移動(dòng)到文件開頭,這就是rewind(fp);的作用。更多關(guān)于rewind函數(shù)的內(nèi)容請點(diǎn)擊:C語言rewind函數(shù)。
文件的后綴不一定是 .txt,它可以是任意的,你可以自己命名,例如 demo.ddd、demo.doc、demo.diy 等。
【示例】從鍵盤輸入兩個(gè)學(xué)生數(shù)據(jù),寫入一個(gè)文件中,再讀出這兩個(gè)學(xué)生的數(shù)據(jù)顯示在屏幕上。
#include#define N 2struct stu{ char name[10]; /pic/pic/pic/pic/pic/pic/pic/pic/pic/p>
運(yùn)行結(jié)果:
Input data:
Tom 2 15 90.5↙
Hua 1 14 99↙
Tom 2 15 90.500000
Hua 1 14 99.000000
【C語言以數(shù)據(jù)塊的形式讀寫文件實(shí)例代碼】相關(guān)文章:
C語言數(shù)據(jù)類型轉(zhuǎn)換實(shí)例代碼11-27
C語言中文件操作詳解及實(shí)例代碼01-29
C語言快速排序?qū)嵗a02-26
C語言合并排序及實(shí)例代碼10-19
C語言選擇排序算法及實(shí)例代碼03-16
C語言合并排序及實(shí)例代碼詳解10-05
- 相關(guān)推薦