![(6.47)-第46課(10.3節(jié)-文件的定位)_第1頁(yè)](http://file4.renrendoc.com/view/890424e1c868256a12dbb6524905d873/890424e1c868256a12dbb6524905d8731.gif)
![(6.47)-第46課(10.3節(jié)-文件的定位)_第2頁(yè)](http://file4.renrendoc.com/view/890424e1c868256a12dbb6524905d873/890424e1c868256a12dbb6524905d8732.gif)
![(6.47)-第46課(10.3節(jié)-文件的定位)_第3頁(yè)](http://file4.renrendoc.com/view/890424e1c868256a12dbb6524905d873/890424e1c868256a12dbb6524905d8733.gif)
![(6.47)-第46課(10.3節(jié)-文件的定位)_第4頁(yè)](http://file4.renrendoc.com/view/890424e1c868256a12dbb6524905d873/890424e1c868256a12dbb6524905d8734.gif)
![(6.47)-第46課(10.3節(jié)-文件的定位)_第5頁(yè)](http://file4.renrendoc.com/view/890424e1c868256a12dbb6524905d873/890424e1c868256a12dbb6524905d8735.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
文件的定位文件操作讀寫文件的方式順序讀寫從文件中一個(gè)接一個(gè)地讀寫數(shù)據(jù),僅當(dāng)讀寫了前一個(gè)數(shù)據(jù)后,才能讀寫下一個(gè)數(shù)據(jù)在讀寫數(shù)據(jù)后,文件位置指針自動(dòng)跳到下一個(gè)讀寫位置隨機(jī)讀寫從文件中讀寫數(shù)據(jù)時(shí)可不考慮數(shù)據(jù)在文件中的位置,可以在文件的任何位置讀寫在讀寫數(shù)據(jù)前,需要將文件位置指針移到讀寫位置當(dāng)文件以讀或?qū)懛绞酱蜷_,文件位置指針設(shè)置在文件頭,若文件以追加方式打開,位置設(shè)置在文件末尾文件的定位
移動(dòng)文件位置指針的操作稱為文件的定位實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵是要按指定的條件進(jìn)行文件的定位操作
文件定位操作是通過庫(kù)函數(shù)的調(diào)用來完成的將文件位置指針返回文件頭函數(shù)rewind函數(shù)功能:函數(shù)原型:intrewind(FILE*fp);把文件的內(nèi)部位置指針移到文件首部【例1:】建立一個(gè)文件,向其中寫入一組學(xué)生的姓名和成績(jī),然后從該文件中讀出成績(jī)大于80分的學(xué)生信息,并顯示在屏幕上解題思路先用fopen()函數(shù)建立文件,再用fwrite()函數(shù)寫入學(xué)生記錄用rewind()函數(shù)將文件位置指針定位于文件開頭,用fread()函數(shù)從文件中順序讀出一個(gè)個(gè)記錄,并判斷成績(jī)是否大于80分。若是,則輸出程序?qū)崿F(xiàn)#include<stdio.h>#include<stdlib.h>structstudent{charname[10];intscore;};voidmain(){FILE*fp;
inti;students,stud[]={{"張雄",90},{"李平",72},{"孫兵",80},{"劉軍”,88},{"王偉",92}};if((fp=fopen("stud.bin","wb+"))==NULL){printf(“不能建立文件stud.bin\n”);exit(0);}for(i=0;i<5;i++)//將5個(gè)學(xué)生的數(shù)據(jù)寫入文件
fwrite(&stud[i],sizeof(structstudent),1,fp);//數(shù)據(jù)寫入文件后,文件位置指針指向了文件尾。調(diào)用rewind函數(shù)讓其重新指向文件首部
rewind(fp);
for(i=0;i<5;i++)//依次讀出5個(gè)學(xué)生的數(shù)據(jù),并將其中成績(jī)大于80分的學(xué)生信息顯示在屏幕上{fread(&s,sizeof(structstudent),1,fp);if(s.score>80)printf(“%s%d\n”,,s.score);}
fclose(fp);}文件位置指針定位函數(shù)fseek函數(shù)原型:函數(shù)功能:
offset為位移量,表示移動(dòng)的字節(jié)數(shù),若offset為負(fù)數(shù),表示向文件首方向移動(dòng),否則是向文件尾方向移動(dòng);pos為起始點(diǎn),表示從何處開始計(jì)算位移量,規(guī)定的起始點(diǎn)有三種:文件首、當(dāng)前位置和文件尾intfseek(FILE*fp,longoffset,intpos);將文件指針fp指向文件的內(nèi)部位置指針從pos指定的位置開始移動(dòng)offset個(gè)字節(jié)起始點(diǎn)表示方法
起始點(diǎn)名字?jǐn)?shù)字代號(hào)文件開始SEEK_SET0當(dāng)前位置SEEK_CUR1文件末尾SEEK_END2fseek(fp,100,0);
//文件指針從文件開始處向后移動(dòng)100個(gè)字節(jié)fseek(fp,60,1);
//文件指針從當(dāng)前位置向后移動(dòng)60個(gè)字節(jié)
fseek(fp,-10,2);
//文件指針從文件末尾處向前移動(dòng)10個(gè)字節(jié)例【例2:】假設(shè)二進(jìn)制文件“alph.dat”中存放了字母表“A┅Z”,現(xiàn)在打開這個(gè)文件,用從尾部倒著讀的方式將其信息讀出并送屏幕顯示#include<stdio.h>#include<stdlib.h>voidmain(){FILE*fp;longi;if((fp=fopen(“alph.dat”,”rb”))==NULL){printf(“fileopenerror.\n”);exit(0);}for(i=1;i<=26;i++){fseek(fp,-i,SEEK_END);//i=1時(shí),定位于字母Z
putchar(fgetc(fp));//顯示讀出的字符,位置指針+1}
fclose(fp);}ftell函數(shù)函數(shù)原型:函數(shù)功能:
函數(shù)原型:函數(shù)功能:文件結(jié)束檢測(cè)函數(shù)feof
longftell(FILE*fp)得到流式文件中位置指針當(dāng)前位置(用相對(duì)于文件開頭的位移量表示)intfeof(FILE*fp);判斷fp指向的文件是否處于文件結(jié)束位置,如文件結(jié)束,則返回值為1,否則為0#include<stdio.h>voidmain(){FILE*fp;//定義文件指針charfilename[80];longlength;
gets(filename);
fp=fopen(filename,"rb");//打開文件if(fp==NULL)printf("filenotfound!\n");else{fseek(fp,0,SEEK_END);//將文件的位置指針定位在文件尾length=ftell(fp);//返回文件位置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 羊毛皮鞋用品項(xiàng)目可行性研究報(bào)告
- 2025年度建筑公司設(shè)計(jì)人員勞動(dòng)合同范本
- 2025年度智能交通合伙人股份轉(zhuǎn)讓及項(xiàng)目管理合同
- 2025年度智能交通系統(tǒng)施工中標(biāo)合同
- 2025年度建筑業(yè)公司建筑工程設(shè)計(jì)合同
- 2025年度文化產(chǎn)業(yè)股權(quán)置換委托代理服務(wù)合同
- 2025年度城市垃圾處理設(shè)施建設(shè)合同
- 2025年度新能源儲(chǔ)能系統(tǒng)研發(fā)與生產(chǎn)合同
- 2025年度工地班組勞動(dòng)合同與環(huán)境保護(hù)協(xié)議范本
- 2025年度健身館私人教練專業(yè)課程合同
- 雙眼視異常處理方法-雙眼視異常的棱鏡處方(雙眼視檢查)
- 鍋爐本體安裝單位工程驗(yàn)收表格
- 我國(guó)水體中抗生素的污染現(xiàn)狀、危害及防治建議
- 手術(shù)出血量的評(píng)估
- 報(bào)價(jià)單(產(chǎn)品報(bào)價(jià)單)
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 0-9任意四位數(shù)數(shù)位排列
- 隧道安全培訓(xùn)課件
- 小學(xué)勞動(dòng)教育教研計(jì)劃
- 電子工程師年終總結(jié)
- 妊娠合并強(qiáng)直性脊柱炎的護(hù)理查房
評(píng)論
0/150
提交評(píng)論