版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
流式文件操作常用函數(shù)說明
目錄TOC\o"1-5"\h\z\o"CurrentDocument"、常用函數(shù)列表 2\o"CurrentDocument"、函數(shù)詳細(xì)介紹 2fopen() 2\o"CurrentDocument"fclose() 3\o"CurrentDocument"fputc() 3\o"CurrentDocument"fgetc() 3\o"CurrentDocument"fseek() 4\o"CurrentDocument"fputs() 4\o"CurrentDocument"fgets() 4\o"CurrentDocument"fprintf() 4\o"CurrentDocument"fscanf() 5\o"CurrentDocument"feof() 5\o"CurrentDocument"ferror() 5\o"CurrentDocument"rewind() 5\o"CurrentDocument"remove() 5\o"CurrentDocument"fread() 5\o"CurrentDocument"fwrite() 6\o"CurrentDocument"tmpfile() 6\o"CurrentDocument"tmpnam(); 6流式文件操作常用函數(shù)說明一、常用函數(shù)列表FILE這個(gè)結(jié)構(gòu)包含了文件操作的基本屬性,對(duì)文件的操作都要通過這個(gè)結(jié)構(gòu)的指針來進(jìn)行,此種文件操作常用的函數(shù)見下表函數(shù)功能fopen()打開流fclose()關(guān)閉流fputc()寫一個(gè)字符到流中fgetc()從流中讀一個(gè)字符fseek()在流中定位到指定的字符fputs()寫字符串到流fgets()從流中讀一行或指定個(gè)字符fprintf()按格式輸出到流fscanf()從流中按格式讀取feof()到達(dá)文件尾時(shí)返回真值ferror()發(fā)生錯(cuò)誤時(shí)返回其值rewind()復(fù)位文件定位器到文件開始處remove()刪除文件fread()從流中讀指定個(gè)數(shù)的字符fwrite()向流中寫指定個(gè)數(shù)的字符tmpfile()生成一個(gè)臨時(shí)文件流tmpnam()生成一個(gè)唯一的文件名二、函數(shù)詳細(xì)介紹1.fopen()fopen的原型是:FILE*fopen(constchar*filename,constchar*mode),fopen實(shí)現(xiàn)三個(gè)功能:為使用而打開一個(gè)流把一個(gè)文件和此流相連接給此流返回一個(gè)FILR指針參數(shù)filename指向要打開的文件名,mode表示打開狀態(tài)的字符串,其取值如下:"r"以只讀方式打開文件"w”以只寫方式打開文件"a"以追加方式打開文件"r+"以讀/寫方式打開文件,如無文件出錯(cuò)"w+"以讀/寫方式打開文件,如無文件生成新文件一個(gè)文件可以以文本模式或二進(jìn)制模式打開,這兩種的區(qū)別是:在文本模式中回車被當(dāng)成一個(gè)字符”\n”,而二進(jìn)制模式認(rèn)為它是兩個(gè)字符0x0D,0x0A;如果在文件中讀到0x1B,文本模式會(huì)認(rèn)為這是文件結(jié)束符,也就是二進(jìn)制模型不會(huì)對(duì)文件進(jìn)行處理,而文本方式會(huì)按一定的方式對(duì)數(shù)據(jù)作相應(yīng)的轉(zhuǎn)換。系統(tǒng)默認(rèn)的是以文本模式打開,可以修改全部變量_fmode的值來修改這個(gè)設(shè)置,例如_fmode=O_TEXT;就設(shè)置默認(rèn)打開方式為文本模式;W_fmode=O_BINARY;則設(shè)置默認(rèn)打開方式是二進(jìn)制模式。我們也可以在模式字符串中指定打開的模式,如"rb”表示以二進(jìn)制模式打開只讀文件,"w+t”或"wt+”表示以文本模式打開讀瀉文件。此函數(shù)返回一個(gè)FILE指針,所以申明一個(gè)FILE指針后不用初始化,而是用fopen()來返回一個(gè)指針并與一個(gè)特定的文件相連,如果成敗,返回NULL。例:FILE*fp;if(fp=fopen("123.456”,"wb"))puts("打開文件成功,elseputs("打開文件成敗,fclose()fclose()的功能就是關(guān)閉用fopen()打開的文件,其原型是:intfclose(FILE*fp);如果成功,返回0,失敗返回EOF。在程序結(jié)束時(shí)一定要記得關(guān)閉打開的文件,不然可能會(huì)造成數(shù)據(jù)丟失的情況例:fclose(fp);fputc()向流寫一個(gè)字符,原型是intfputc(intc,FILE*stream);成功返回這個(gè)字符,失敗返回EOF。例:fputc(''X'',fp);fgetc()從流中讀一個(gè)字符,原型是intfputc(FILE*stream);成功返回這個(gè)字符,失敗返回EOF。例:charch1=fgetc(fp);fseek()此函數(shù)一般用于二進(jìn)制模式打開的文件中,功能是定位到流中指定的位置,原型是intfseek(FILE*stream,longoffset,intwhence);如果成功返回0,參數(shù)offset是移動(dòng)的字符數(shù),whence是移動(dòng)的基準(zhǔn),取值是:符號(hào)常量值基準(zhǔn)位置SEEK_SET0文件開頭SEEK_CUR1當(dāng)前讀寫的位置SEEK_END2文件尾部例:fseek(fp,1234L,SEEK_CUR);//把讀寫位置從當(dāng)前位置向后移動(dòng)1234字節(jié)(L后綴表示長(zhǎng)整數(shù))fseek(fp,0L,2);//把讀寫位置移動(dòng)到文件尾fputs()寫一個(gè)字符串到流中,原型intfputs(constchar*s,FILE*stream);例:fputs("ILoveYou",fp);fgets()從流中讀一行或指定個(gè)字符,原型是char*fgets(char*s,intn,FILE*stream);從流中讀取n-1個(gè)字符,除非讀完一行,參數(shù)s是來接收字符串,如果成功則返回s的指針,否則返回NULL。例:如果一個(gè)文件的當(dāng)前位置的文本如下Love,IHaveBut 如果用fgets(str1,4,file1);則執(zhí)行后str1="Lov”,讀取了4-1=3個(gè)字符,而如果用fgets(str1,23,file1);則執(zhí)行str="Love,IHave”,讀取了一行(不包括行尾的''\n'')。fprintf()按格式輸入到流,其原型是intfprintf(FILE*stream,constchar*format[,argument,…]);其用法和printf()相同,不過不是寫到控制臺(tái),而是寫到流罷了例:fprintf(fp,”%2d%s”,4,”Hahaha”);fscanf()從流中按格式讀取,其原型是intfscanf(FILE*stream,constchar*format[,address,…]);其用法和scanf()相同,不過不是從控制臺(tái)讀取,而是從流讀取罷了。例:fscanf(fp,"%d%d”,&x,&y);feof()檢測(cè)是否已到文件尾,是返回真,否則返回0,其原型是intfeof(FILE*stream);例:if(feof(fp))printf("已到文件尾”);ferror()原型是intferror(FILE*stream);返回流最近的錯(cuò)誤代碼,可用clearerr()來清除它,clearerr()的原型是voidclearerr(FILE*stream);例:printf("%d",ferror(fp));rewind()把當(dāng)前的讀寫位置回到文件開始,原型是voidrewind(FILE*stream);其實(shí)本函數(shù)相當(dāng)于fseek(fp,0L,SEEK_SET);例:rewind(fp);remove()刪除文件,原型是intremove(constchar^filename);參數(shù)就是要?jiǎng)h除的文件名,成功返回0。例:remove("c:\\io.sys");fread()從流中讀指定個(gè)數(shù)的字符,原型是size_tfread(void*ptr,size_tsize,size_tn,FILE*stream);參數(shù)ptr是保存讀取的數(shù)據(jù),void*的指針可用任何類型的指針來替換,如char*、int*等等來替換;size是每塊的字節(jié)數(shù);n是讀取的塊數(shù),如果成功,返回實(shí)際讀取的塊數(shù)(不是字節(jié)數(shù)),本函數(shù)一般用于二進(jìn)制模式打開的文件中。例:charx[4230];FILE*file1=fopen(”c:\\msdos.sys”,”r”);fread(x,200,12,file1);//共讀取200*12=2400個(gè)字節(jié)fwrite()與fread對(duì)應(yīng),向流中寫指定的數(shù)據(jù),原型是size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream);參數(shù)ptr是要寫入的數(shù)據(jù)指針,void*的指針可用任何類型的指針來替換,如char*、int*等等來替換;size是每塊的字節(jié)數(shù);n是要寫的塊數(shù),如果成功,返回實(shí)際寫入的塊數(shù)(不是字節(jié)數(shù)),本函數(shù)一般用于二進(jìn)制模式打開的文件中。例:charx[]="ILoveYou";fwire(x,6,12,fp);//寫入6*12=72字節(jié)將把"ILove"寫到流fp中12次,共72字節(jié)16?tmpfi
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流課程設(shè)計(jì)實(shí)驗(yàn)
- 種蘑菇課程設(shè)計(jì)
- 中華人民共和國(guó)民法典知識(shí)競(jìng)賽題庫(kù)及答案
- 2024幼兒園安全教育工作總結(jié)結(jié)尾(31篇)
- 2024年自來水公司年終工作總結(jié)(35篇)
- 液體混合裝置plc課程設(shè)計(jì)
- 玉雕課程設(shè)計(jì)
- 食品行業(yè)客服工作總結(jié)
- 客房清潔員的工作總結(jié)
- 中醫(yī)科醫(yī)師工作總結(jié)
- 深部真菌病課件
- 用戶界面測(cè)試
- 人工氣道濕化的護(hù)理培訓(xùn)課件
- 電網(wǎng)適用的法律法規(guī)標(biāo)準(zhǔn)規(guī)范清單
- 讀書分享-給教師的一百條建議
- GB/T 4269.3-2000農(nóng)林拖拉機(jī)和機(jī)械、草坪和園藝動(dòng)力機(jī)械操作者操縱機(jī)構(gòu)和其他顯示裝置用符號(hào)第3部分:草坪和園藝動(dòng)力機(jī)械用符號(hào)
- GB/T 11618.1-2008銅管接頭第1部分:釬焊式管件
- 開工復(fù)工第一課
- 安徽省淮南市鳳臺(tái)縣基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室地址信息
- 旅游服務(wù)禮儀說課市公開課金獎(jiǎng)市賽課一等獎(jiǎng)?wù)n件
- 【線性代數(shù)自考練習(xí)題】滇西應(yīng)用技術(shù)大學(xué)專升本真題匯總(附答案解析)
評(píng)論
0/150
提交評(píng)論