




版權(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)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 面試成功之路:競(jìng)聘面試題目與應(yīng)對(duì)策略
- 2025勞動(dòng)合同樣本版
- 醫(yī)藥衛(wèi)生人才招聘新篇章:醫(yī)保文員面試題示例及應(yīng)對(duì)策略
- 高薪酬職業(yè)選才全攻略:人力資源專家面試題
- 美團(tuán)高級(jí)運(yùn)營(yíng)管理面試題目全解析
- 2025采購(gòu)合同范本示例
- 高品質(zhì)金融行業(yè)調(diào)研面試題及答案
- 2025餐飲聯(lián)盟合作協(xié)議范本
- 線程編程高級(jí)面試題解析
- 企業(yè)營(yíng)銷策略制定與執(zhí)行:吉利大廠面試題與實(shí)戰(zhàn)案例
- GB/T 29651-2013錳礦石和錳精礦全鐵含量的測(cè)定火焰原子吸收光譜法
- GA/T 718-2007槍支致傷力的法庭科學(xué)鑒定判據(jù)
- 千年菩提路解說詞
- 高一英語必修一試卷(含答案)(適合測(cè)試)
- 護(hù)理人員檔案管理模板
- 機(jī)械設(shè)備日常點(diǎn)檢表
- 中醫(yī)病癥診斷療效標(biāo)準(zhǔn)
- 危大工程巡視檢查記錄
- JJG 741-2022 標(biāo)準(zhǔn)鋼卷尺檢定規(guī)程-(高清最新版)
- 中國(guó)人民銀行反洗錢調(diào)查審批表
- DB37T 536-2019 文書檔案目錄數(shù)據(jù)采集規(guī)范
評(píng)論
0/150
提交評(píng)論