數(shù)據(jù)塊讀寫函數(shù)通用_第1頁
數(shù)據(jù)塊讀寫函數(shù)通用_第2頁
數(shù)據(jù)塊讀寫函數(shù)通用_第3頁
數(shù)據(jù)塊讀寫函數(shù)通用_第4頁
數(shù)據(jù)塊讀寫函數(shù)通用_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第頁共頁最新c語言文件數(shù)據(jù)塊讀取并賦值數(shù)據(jù)塊讀寫函數(shù)通用fgets有局限性,每次最多只能從文件中讀取一行內(nèi)容,因為fgets遇到換行符就完畢讀取。假如希望讀取多行內(nèi)容,需要使用fread函數(shù);相應(yīng)地寫入函數(shù)為fwrite。fread函數(shù)用來從指定文件中讀取塊數(shù)據(jù)。所謂塊數(shù)據(jù),也就是假設(shè)干個字節(jié)的數(shù)據(jù),可以是一個字符,可以是一個字符串,可以是多行數(shù)據(jù),并沒有什么限制。fread的原型為:size_tfread(void*ptr,size_tsize,size_tcount,file*fp);fwrite函數(shù)用來向文件中寫入塊數(shù)據(jù),它的原型為:size_tfwrite(void*ptr,size_tsize,size_tcount,file*fp);對參數(shù)的說明:ptr為內(nèi)存區(qū)塊的指針,它可以是數(shù)組、變量、構(gòu)造體等。fread中的ptr用來存放讀取到的數(shù)據(jù),fwrite中的ptr用來存放要寫入的數(shù)據(jù)。size:表示每個數(shù)據(jù)塊的字節(jié)數(shù)。count:表示要讀寫的數(shù)據(jù)塊的塊數(shù)。fp:表示文件指針。理論上,每次讀寫size*count個字節(jié)的數(shù)據(jù)。size_t是在stddef.h頭文件中使用typedef定義的數(shù)據(jù)類型,表示無符號整數(shù),也即非負(fù)數(shù),常用來表示數(shù)量。返回值:返回成功讀寫的塊數(shù),也即count。假如返回值小于count:對于fwrite來說,肯定發(fā)生了寫入錯誤,可以用ferror函數(shù)檢測。對于fread來說,可能讀到了文件末尾,可能發(fā)生了錯誤,可以用ferror或feof檢測。【例如】從鍵盤輸入一個數(shù)組,將數(shù)組寫入文件再讀取出來。#include#definen5intmain{//從鍵盤輸入的'數(shù)據(jù)放入a,從文件讀取的數(shù)據(jù)放入binta[n],b[n];inti,size=sizeof(int);file*fp;if((fp=fopen("d:","rb+"))==null){printf("cannotopenfile,pressanykeytoexit!n");getch;exit(1);}//從鍵盤輸入數(shù)據(jù)并保存到數(shù)組afor(i=0;i<n;i++){scanf("%d",-a[i]);}//將數(shù)組a的內(nèi)容寫入到文件fwrite(a,size,n,fp);//將文件中的位置指針重新定位到文件開頭rewind(fp);//從文件讀取內(nèi)容并保存到數(shù)組bfread(b,size,n,fp);//在屏幕上顯示數(shù)組b的內(nèi)容for(i=0;i<n;i++){printf("%d",b[i]);}printf("n");fclose(fp);return0;}運行結(jié)果:23409500100222↙23409500100222fwrite/fread函數(shù)直接操作字節(jié),建議使用二進(jìn)制方式翻開文件。請閱讀《c語言中文本文件與二進(jìn)制文件的區(qū)別》理解更多。翻開d:,發(fā)現(xiàn)文件內(nèi)容根本無法閱讀。這是因為我們使用"rb+"方式翻開文件,數(shù)據(jù)以二進(jìn)制形式寫入文件,一般無法閱讀。數(shù)據(jù)寫入完畢后,位置指針在文件的末尾,要想讀取數(shù)據(jù),必須將文件指針挪動到文件開頭,這就是rewind(fp);的作用。更多關(guān)于rewind函數(shù)的內(nèi)容請____:c語言rewind函數(shù)。文件的后綴不一定是.____,它可以是任意的,你可以自己命名,例如、等?!纠纭繌逆I盤輸入兩個學(xué)生數(shù)據(jù),寫入一個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏幕上。#include#definen2structstu{charname[10];//姓名intnum;//學(xué)號intage;//年齡floatscore;//成績}boya[n],boyb[n],*pa,*pb;intmain{file*fp;inti;pa=boya;pb=boyb;if((fp=fopen("d:","wb+"))==null){printf("cannotopenfile,pressanykeytoexit!n");getch;exit(1);}//從鍵盤輸入數(shù)據(jù)printf("inputdata:n");for(i=0;iname,-pa-》num,-pa-》age,-pa-》score);}//將數(shù)組boya的數(shù)據(jù)寫入文件fwrite(boya,sizeof(structstu),n,fp);//將文件指針重置到文件開頭rewind(fp);//從文件讀取數(shù)據(jù)并保存到數(shù)據(jù)boybfread(boyb,sizeof(structstu),n,fp);//輸出數(shù)組boyb中的數(shù)據(jù)for(i=0;iname,pb-》num,pb-》age,pb

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論