付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十二章文12.1將短句 oWorld”寫入到文12.2學(xué)生成績文12.3文件12.4文件綜合應(yīng)用:個(gè)人小金庫的管本章要什么是文件?C文件是如何的什么是文本文件和二進(jìn)制文件怎樣打開、關(guān)閉文件怎樣編寫文件讀寫程序怎樣編寫程序,實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)處理將短句 例12-1把短句“ oWorld!”保存到磁盤文#include<stdio.h>#include<stdlib.h>intmain(void)
例12-1源程 FILE /*定義文件指針if(fpfopen("f1.txt",wNULL){/*打開文printf("Fileopenerror!\n");}fprintf(fp,"%s"," oWorld!");/*寫文件*/if(fclose(fp)){ /*關(guān)閉文件*/printf("Cannotclosethefile!\n"}return}文件的概文件:保存在外器上的一組數(shù)據(jù)的特點(diǎn)??數(shù)據(jù)長久保??數(shù)據(jù)長度不??數(shù)據(jù)按順序存字字字字字??ASCII(文本文textstream)字符??二進(jìn)制碼(二進(jìn)制文件binary例如,整數(shù)??文本文件保存:49505152(4個(gè)字符??二進(jìn)制文件保存:04D2(1234的二進(jìn)制數(shù)由于磁盤速度直接把數(shù)據(jù)寫到磁盤效率很程序控由操動(dòng)完文512字由操動(dòng)完文512字緩沖數(shù)緩沖文件系??向磁盤輸出數(shù)據(jù):數(shù)據(jù)緩沖區(qū),裝滿緩沖區(qū)后磁盤文件。??從磁盤讀入數(shù)據(jù):先從磁盤文件將一批數(shù)程序控?cái)?shù)
52字
動(dòng)完緩沖文緩沖內(nèi)存單
用什么標(biāo)
內(nèi)存單
文件緩沖文件與文件類用用文件指針指示文件緩沖區(qū)中具體讀寫緩沖緩沖數(shù)程序控
由操系系統(tǒng)動(dòng)完文 512512文件結(jié)構(gòu)與文件類型指自定義類型typedef<已有類型名><新類型名自定義類型<已有類型名<新類型名i,i,自定義類型(typedef)的使用方??定義變 int??變量名→新類型 int→??加上 typedefint??用新類型名定義變量INTEGERintint intNUM[10] a<===>inta[10]FILE:結(jié)構(gòu)類typedefFILE:結(jié)構(gòu)類typedef定義,stdio.htypedefstruct{/*緩沖區(qū)使用/*文件狀態(tài)標(biāo)志/*文件描述符/*緩沖區(qū)大小unsigned/*文件緩沖區(qū)的首地址unsigned/*指向文件緩沖區(qū)工作指unsigned/*其他信}FILE*
文件類型指指向文件緩沖區(qū),通過移動(dòng)指針實(shí)現(xiàn)對(duì)文件的操數(shù)緩數(shù)緩沖程序控
由操 512512系統(tǒng)動(dòng)完文系統(tǒng)動(dòng)完文12.2學(xué)生成績文例12-2已知一個(gè)數(shù)據(jù)文件f.txt中保存了5個(gè)學(xué)生的計(jì)#include"stdio.h"intmain(void) FILE* /*定義文件指針longcharstname[20];intscore;if((fpfopen("f.txt","r") /*打開文件printf("Fileopenerror!\n");}while(!feof(fp){fscanf(fp,"%ld%s%d",&num,stname,printf("%ld%s%d\n",num,stname,if(fclose(fp)/*關(guān)閉文件 printf("Cannotclosethefile!\n");}}打開文if((fp=fopen("f.txt","r"))==NULL){printf("Fileopenerror!\n");}fopen("文件名","文件打開方式??使文件指針與相應(yīng)文件實(shí)體對(duì)應(yīng)起??程序?qū)ξ募羔樳M(jìn)行操作,即fp代表磁盤文fopen("文件名","文件打開方式
打開文??使文件指針與相應(yīng)文件實(shí)體對(duì)應(yīng)起??程序?qū)ξ募羔樳M(jìn)行操作,即fp代表磁盤文函數(shù)fopen的返回??不成功,則返回一個(gè)NULL(空值exit(0):關(guān)閉所有打開的文件,并終止程序的執(zhí)??參數(shù)0表示程序正常結(jié)束??非0參數(shù)通常表示不正常的程序結(jié)fp=fopen("f.txt",文件打開方式參數(shù)
文件打開方文本文件使用方式含使用方式含“r打開只讀文件“rb打開只讀文件“w建立只寫新文件“wb建立只寫新文件“a打開添加寫文件打開添加寫文件“r+打開讀/寫文件“rb+打開讀/寫文件“w建立讀/寫新文件“wb+建立讀/寫新文件“a打開讀/寫文件“ab+打開讀/寫文件if讀文指定的文件必須存在,否則出錯(cuò)
文件讀寫與打if寫文件(指定的文件可以存在,也可以不存在if"w方式if該文件已經(jīng)存原文件將被刪去重新建立按指定的名字新建一個(gè)文件elseif"a方式if該文件已經(jīng)存寫入的數(shù)據(jù)將被添加到指定文件原有數(shù)據(jù)的后面,不會(huì)刪去原來的內(nèi)容按指定的名字新建一個(gè)文件(與“w”相同if文件同時(shí)讀和"r+"、"w"a打開文if(fclose(fp)
printf("Cannotclosethefile!\n"}fclose(文件指針??把緩沖區(qū)中的數(shù)據(jù)寫入磁盤扇區(qū),確保寫文件的正常完??釋放文件緩沖區(qū)單元和FILE結(jié)構(gòu)體,使文件指件脫鉤函數(shù)fclose的返回??返回0:正常關(guān)??返回非0:無法正常關(guān)閉文12.3文件例12-3已知一個(gè)文本數(shù)據(jù)文件f1.txt,請(qǐng)將該文件一份,保存為f2.txt。 #include<stdio.h>intmain(void) FILE*fp1,*fp2charc;if((fp1=pprintf("Fileo p
while(!feof(fp1)){c=fgetc(fp1);fputc(c,fp2);}fclose(fp1);fclose(fp2);return0;}if((fp2=fopen("f2.dat","w"))==NULL){printf("Fileopenerror!\n");}打開多個(gè)文if((fp1=fopen(f1.dat,"r"))==NULL){printf("Fileopenerror!\n");}if((fp2=fopen("f2.dat","w"))==printf("Fileopenerror!\n");}CC語言允許同時(shí)打開多個(gè)文??不同的文件對(duì)應(yīng)不同的文件指??不允許同一個(gè)文件在關(guān)閉前再次打文件讀寫函字符讀寫函數(shù) fgetc/字符串讀寫函數(shù):fputs格式化讀寫函數(shù):fscanf二進(jìn)制讀寫函數(shù):fread其他相關(guān)函數(shù)??檢測(cè)文件結(jié)尾函數(shù)??檢測(cè)文件讀寫出錯(cuò)函數(shù)??清除末尾標(biāo)志和出錯(cuò)標(biāo)志函數(shù)??文件定位的函數(shù)字符讀寫函數(shù)fgetc和while(!feof(fp1)){c=fgetc(fp1);fputc(c,fp2);}函數(shù)fputc??fputc(ch,把一個(gè)字ch寫到fp所指示的磁盤文??返回-1(EOF):寫文件失ch:寫文件成字符讀寫函數(shù)fgetc和函數(shù)fgetcch=fgetc(fp)從fp所指示的磁盤文件上讀入一個(gè)字符到??區(qū)分鍵盤字符輸入函數(shù)getchar例12-從鍵盤輸入10個(gè)字符,寫到文件f2.txt中,再重鍵盤輸寫入文f2.txt讀文屏幕顯??鍵盤輸入→f2.txt時(shí),文件按寫方式打開??f2.txt→顯示到屏幕時(shí),文件按讀方??讀和寫是兩種不同的操作f2.txt分別被打開int inti;charch;FILEif((fp=fopen("f2.txt","w"))== /*打開文件f2.txt*/printf("Fileopenerror!\n");
源程}for(i0i10i+/*寫文件10次{ch=fputc(ch,fp)}if(fclose(fp/*關(guān)閉文件{printf("Cannotclosethefile!\n"}if((fp=fopen("f2.txt","r"))=={/*打開文件f2.txt*/printf("Fileopenerror!\n");
源程}for(i=0;i<10; /*讀文件10次*/ch=fgetc(fp);}if(fclose(fp)){/*再次關(guān)閉文件*/printf("Cannotclosethefile!\n");}return字符串方式讀寫函數(shù)fgets和函數(shù)fputsfputs(s,用來向指定的文本文件寫入一個(gè)字符??s:要寫入的字符串,結(jié)束符’\0’不寫入文件????函數(shù)返回執(zhí)行成功,函數(shù)返回所寫的最后一個(gè)字否則,函數(shù)返回字符串方式讀寫函數(shù)fgets和函數(shù)fgets()fgets(snfp);從文本文件中字符字符串方式讀寫函數(shù)fgets和串存入s所指向內(nèi)存地址開始的n-1個(gè)連續(xù)的內(nèi)存單??函數(shù)返回執(zhí)行成功,返的字符串如果失敗,則返回空指??函數(shù)返回執(zhí)行成功,返的字符串如果失敗,則返回空指針,這時(shí),s的內(nèi)容不確將字符串"apple""grape"pear寫入到磁盤文f12-5.txt中,然后再從該文件中讀出,顯示到屏int FILE
例12-chara[][80]={"apple","grape","pear"},strout[80]="";inti;if((fp=fopen("f12-5.txt","w"))==NULL){printf("Fileopenerror!\n");exit(0);}for(i=0;i<fputs(a[i],fp);例12-if((fp=fopen("f12-5.txt","r"))==printf("Fileopenerror!\n");}i=while(!feof(fp)if(fgets(strout,strlen(a[i++])+1,fp)!=NULL)}return0;}格式化文件讀寫fscanf和fscanf(文件指針,格式字符串,輸入表fprintf(文件指針,格式字符串,輸出表指定格式的輸入輸出函FILE*fp;intn;floatx;fp=fopen("a.txt","r");fp=fopen("b.txt",fprintf(fpd%f”,nx);表示把變量n和x的數(shù)值寫入將一個(gè)整數(shù)和一個(gè)字符串寫入文件#include<stdio.h>voidmain(){char*p=“VC++6.0”;inti=617;FILEif((fp=fopen(“f3.dat","w"))==NULL{printf("Cannotopenfile!");exit(0);fprintf(fp,"%d,%s",i,p);}*數(shù)據(jù)塊讀寫fread()和fread(buffer,size,count,從二進(jìn)制文件中讀入一個(gè)數(shù)據(jù)塊到變fwrite(buffer,size,count,向二進(jìn)制文件中寫入一個(gè)數(shù)據(jù)??buffer:指針,表示存放數(shù)據(jù)的首地址??size:數(shù)據(jù)塊的字節(jié)??count:要讀寫的數(shù)據(jù)塊塊??fp:文件指其他相關(guān)函feof(fp1:到文件結(jié)束位0:文件未結(jié)其他相關(guān)函函數(shù)rewindrewind(FILEch=fgetc(fp);while(ch!=EOFch=fgetc(fp);{FILE*fp;charch,st[20];if((fp==={printf("Cannotopenfile!");printf("inputastring:\n");函數(shù)fseek(fseek(fp,offset,用來控制指針移??offset:移動(dòng)偏移量,long
其他相關(guān)函例如fseek(fp20L0):將文件位置指針移動(dòng)到離文件fseek(fp20LSEEK_END):將文件位置指針移其他相關(guān)函函
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026渭南澄城縣城關(guān)街道衛(wèi)生院招聘筆試模擬試題及答案解析
- 2026年度宣城市宣州區(qū)森興林業(yè)開發(fā)有限公司第一批次員工公開招聘考試備考題庫及答案解析
- 培訓(xùn)機(jī)構(gòu)崗位制度
- 學(xué)校教材培訓(xùn)制度
- 口腔門店學(xué)習(xí)培訓(xùn)制度
- 培訓(xùn)機(jī)構(gòu)運(yùn)行管理制度
- 鎮(zhèn)醫(yī)院人員培訓(xùn)制度
- 中職教師培訓(xùn)制度
- 家具銷售培訓(xùn)制度
- 如皋物業(yè)消防培訓(xùn)制度
- 2026年榆能集團(tuán)陜西精益化工有限公司招聘?jìng)淇碱}庫完整答案詳解
- 2026廣東省環(huán)境科學(xué)研究院招聘專業(yè)技術(shù)人員16人筆試參考題庫及答案解析
- 邊坡支護(hù)安全監(jiān)理實(shí)施細(xì)則范文(3篇)
- 6.1.3化學(xué)反應(yīng)速率與反應(yīng)限度(第3課時(shí) 化學(xué)反應(yīng)的限度) 課件 高中化學(xué)新蘇教版必修第二冊(cè)(2022-2023學(xué)年)
- 北京市西城區(qū)第8中學(xué)2026屆生物高二上期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 2026年遼寧輕工職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫帶答案解析
- 2026屆北京市清華大學(xué)附中數(shù)學(xué)高二上期末調(diào)研模擬試題含解析
- 醫(yī)院實(shí)習(xí)生安全培訓(xùn)課課件
- 四川省成都市武侯區(qū)西川中學(xué)2024-2025學(xué)年八上期末數(shù)學(xué)試卷(解析版)
- (售后服務(wù)方案)物料、設(shè)備采購售后服務(wù)方案
- 施工現(xiàn)場(chǎng)車輛進(jìn)出沖洗記錄
評(píng)論
0/150
提交評(píng)論