版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、項目工程8學(xué)生成績文件管理,項目工程要求將某一級40名學(xué)生的相關(guān)數(shù)據(jù)存入文件,從文件中讀出,將該數(shù)據(jù)按平均分數(shù)由高到低的順序排列,輸出到屏幕上和其他文件上。 第二,項目分析要完成學(xué)生成績的檔案管理,首先要了解檔案的概念,然后學(xué)習(xí)檔案的打開與關(guān)閉;第二,檔案的讀寫是必要的。 因此,將該項目工程分為兩個塔斯克進行介紹。 任務(wù)1是把學(xué)生的成績按順序讀寫文件任務(wù)2是把學(xué)生的成績隨機讀寫文件。 任務(wù)1把學(xué)生的成績按順序讀寫在文件上,一、問題方案(1)有一個班的修訂40名學(xué)生通過數(shù)學(xué)考試,現(xiàn)在把這個班的學(xué)生成績保存在文件上,便于今后的管理,做個計程儀計劃來實現(xiàn)。 (2)除了上述問題之外,還將文檔中保存的數(shù)
2、據(jù)讀出并輸出至顯視器。 二、具體實現(xiàn)#include stdio.h main() int a10、I、b10; 文件* p; /*定義文件指針定類型的變量*/p=fopen(“aaa.txt”、“w”); /*文本文件*/for(i=0; i10; (I )關(guān)閉掃描(% d,/文件,p=fopen(“aaa.txt,r ); /*打開用于讀取文本文件的文件將*/*aaa.txt文件中的數(shù)據(jù)讀取到數(shù)組b中*/for(i=0; i10; I )打開和關(guān)閉i ) fscanf(p,%d,1,文件; 2、文件的讀寫、三、相關(guān)知識、(一)文件的開放關(guān)閉。 1 .文件概念“文件”是記錄在外部介質(zhì)上的數(shù)據(jù)
3、的有序集合。 從文件的編碼體系來看,文件分為ASCII查詢密碼文件和二進制代碼文件。 2 .文件類型指針FILE *指針變量標識符示例: FILE *p; 一般習(xí)慣把p稱為指向一個文件的指針。 在進行讀寫操作之前打開文件,使用完畢后關(guān)閉文件。 3 .打開和關(guān)閉文件(1)打開文件(fopen ()函數(shù)) fopen ()函數(shù)打開以FILE *p p=fopen (使用文件名、文件方法)()的格式調(diào)用的文件if (fp=fopen(“d:aa.dat”、“r”)打印機(“ncantopenfile”! ”“這是一個很好的例子?!?); exit(1)、(2)文件的讀寫、(2)文件的讀寫fprint
4、f ()函數(shù)和fscanf ()函數(shù)調(diào)用格式: fscanf (文件指針、格式字符串、輸入表列) fprintf FILE *p; p=開放(AAA.txt,w ) :關(guān)閉(I=0; i10; i ) scanf(%d,/*將輸入的成績以5d的格式保存到文件aaa.txt中*/,for(i=0; i10; 打印(p,ai ); fclose(p ); /關(guān)閉文件p=fopen(aaa.txt,r ); 將aaa.txt文件中的數(shù)據(jù)讀取到數(shù)組b中*/for(i=0; i10; I )分析i ) fscanf(p,%d,問題方案中的c-plum,【例8-1】從牛鼻子板輸入學(xué)生的姓名和數(shù)學(xué)、英語、語
5、文3門成績,補正該學(xué)生的平均分,將該學(xué)生的相關(guān)信息寫入文檔cc.txt讀入cc.txt文件的數(shù)據(jù)分析: (1)一個字符數(shù)組存儲名字,三個整數(shù)變量存儲三堂課的成績,一個實數(shù)變量存儲平均分;(2)將該同學(xué)的名字、三門課的成績讀入牛鼻子板,再訂正平均分;(3)姓名、三門課的成績, 將平均點寫入以寫入形式打開的文本文件cc.txt,關(guān)閉該文件(以只讀方式打開cc.txt文件后,將該文件的數(shù)據(jù)讀入指定的變量(5)向顯視器輸出變量# include stdio.h # inn 有一個exit ()函數(shù),其中使用此庫函數(shù)*/main() char name10和n10。 英制、英制、細胞、m1、e1、c1;
6、 浮動avg、a1; 文件* FP; 以寫入格式打印文件cc.txt*/if(fp=fopen(cc.txt,w )=null (無法打開文件n ):exit (1); printf (請輸入這個學(xué)生的數(shù)據(jù)n )/*輸入那個同學(xué)的名字,成績,把那個同學(xué)的平均分*/scanf(%s%d%d%d,name,/*那個同學(xué)的名字,三門的成績,平均分寫入文件aa.txt。 fclose(fp ); 文件cc.txt*/if(fp=fopen(cc.txt,r ) )=空打印(無法打開文件n ):exit (1); /*將該同學(xué)的姓名、三門成績、平均分讀入指定變量*/fscanf(fp,%s%d%d%d%
7、f,n1,【例8-2】從牛鼻子板上輸入10個,分析:寫這個問題的構(gòu)想是: (1)寫10個同學(xué)的名字, (2)在牛鼻子板上讀入10個同學(xué)的名字,3個科目的成績,對每個同學(xué)的平均分進行訂正;(3)將10個同學(xué)的名字,三門課的成績及平均分寫在文本文件aa.txt中包括stdio.h #包括程序. h/*定義結(jié)構(gòu)* /結(jié)構(gòu)圖形名稱10; 英匹特、英格麗斯、陳斯; 浮動avg; 主() stu student 10,*pp; 文件* FP; 英特爾; PP=史蒂文; 以寫入格式打印文件aa.txt*/if(fp=fopen(aa.txt,w )=null (無法打開文件n ):exit (1); pri
8、ntf (請輸入10名學(xué)生的數(shù)據(jù)n )/*輸入10名同學(xué)的名字、成績,各同學(xué)的平均分*/for(i=0; 關(guān)閉iname、/文件,輸入的數(shù)據(jù)如下:打開項目aa.txt、【例8-3】讀出上例的文本文件aa.txt的數(shù)據(jù),將讀出的數(shù)據(jù)輸出到顯示器。 分析: (1)定義存儲讀取數(shù)據(jù)的結(jié)構(gòu)數(shù)組(2)以只讀方式打開文件aa.txt。 (3)將文本文件aa.txt的數(shù)據(jù)讀入到構(gòu)造體數(shù)組中(4)將該數(shù)組輸出到顯視器,# include stdio.h # includeprocess.h/*有exit ()函數(shù),用該庫函數(shù)*/*表示構(gòu)造體*/structstuchhes 英匹特、英格麗斯、陳斯; 浮動avg
9、; 主() stu student 10,*pp; 英特爾; 文件* FP; /*以讀取的形式打印文件aa.txt*/if(fp=fopen(aa.txt,r ) )=null (不能打開文件n ); exit(1); PP=史蒂文; 從、/*文件中將10個同學(xué)的名字、3個科目的成績、平均分讀入結(jié)構(gòu)數(shù)組student */for (I=0; iname,顯然,輸出的結(jié)果是上述例子的數(shù)據(jù)。 2. fread ()和fwrite ()函數(shù)同時讀寫數(shù)據(jù)定徑套,例如數(shù)組元素和結(jié)構(gòu)變量的值。 其投入產(chǎn)出函數(shù)是二進制形式的投入產(chǎn)出函數(shù),投入產(chǎn)出不需要進行數(shù)據(jù)的轉(zhuǎn)換,投入產(chǎn)出速度相對較快。讀寫封搖滾樂函數(shù)調(diào)
10、用的一般形式是fread(buffer,size,count,fp ); 寫入(緩沖、大小、計數(shù)、fp ); 說明:關(guān)于buffer:fread (),指讀取的數(shù)據(jù)的保存位置fwrite時,是輸出數(shù)據(jù)的地址。size讀寫數(shù)據(jù)時,每1數(shù)據(jù)的大小count :讀寫數(shù)據(jù)的筆數(shù)fp :文件指針、for(i=0; 名稱,自由(YY,sizeof (結(jié)構(gòu)步驟),10,fp ); for(i=0; 名稱、對匹配、對引擎列表、對鏈路、對avg ); 寫入(PP、尺寸(結(jié)構(gòu))、10、fp ); 由fread ()、fwrite ()函數(shù)合成了【例8-2】【例8-3】的程序包括: # include stdio.
11、h # include process.h int math、englist、chinese; 浮動avg; 主()步驟10、步驟10、*yy、*pp; 文件* FP; 英特爾; PP=史蒂文; 打印機(無法打開文件n ):exit (1); printf (請輸入10個學(xué)生的數(shù)據(jù)for(i=0; 名字,yy=ss; /*一次讀取10個人的同級生資料*/fread(yy,sizeof(struct stu ),10,fp ); /*將結(jié)果*/printf顯示在顯示器上(讀取文件后的數(shù)據(jù)為:n) for(i=0; 名稱、YY匹配、YY工程師、YY鏈接、yy-avg ); fclose(fp );
12、 student讀入牛鼻子板,ss讀入文件,以寫入形式打開二進制文件aa.dat,一次以寫入形式打開10個數(shù)據(jù),以讀入形式打開二進制文件aa.dat,一次讀取10個數(shù)據(jù),3. feof 功能是調(diào)用的一般形式: feof (文件指針)、【例8-4】打開在例8-2中創(chuàng)建的文件aa.txt,輸入名稱,在aa.txt文件中查找該學(xué)生,找到該學(xué)生的所有數(shù)據(jù)后輸出,如果沒有輸入的名稱給予打開的文件aa.txt (2)輸入要檢索的名稱(3)讀取記錄查詢密碼,檢查該記錄查詢密碼的名稱是否與檢索的名稱一致,如果一致則輸出該記錄查詢密碼。 (4)如果不是文件的末尾,則檢查(3)、(5)所有的記錄查詢密碼,如果沒有
13、該記錄查詢密碼,則重復(fù)輸出相應(yīng)的信息。 #包括stdio.h #包括流程. h #包括字符串. hstructstucharname 10。 英匹特、英格麗斯、陳斯; 浮動avg; 主()步驟10、*pp、ss10、*yy; char nn10; 文件* FP; 英特爾; i=0; fp=fopen(aa.txt,r ) :打印(請輸入要搜索的名稱: ) gets (nn ); while (! feof(fp) fscanf(fp,%s%d%d%d%f,,塔斯克2將學(xué)生的成績隨機地讀寫到文件中,另一方面,問題情景是從牛鼻子板輸入一個級別440的第2、4、6、8、10
14、個學(xué)生的分析:例8-2、例8-3的文件的讀寫全部按順序進行,但本塔斯克的問題是要求隨機讀寫,即按照要求進行讀寫。 也就是說,人工控制當前文件指針的移動,使文件指針能夠自由指向我們想要指向的位置,即所謂的文件定位和隨機讀寫,而不是像以往那樣以物理順序一個一個移動。 二、具體實現(xiàn)(假設(shè)只有10名學(xué)生執(zhí)行計劃)、# include stdio.h # include process.hstructstucharname 10; 英匹特、恩格列斯特、陳斯; 浮動avg; 主()步驟10、*pp、ss10、*yy; 文件* FP; 英特爾; PP=史蒂文; if(fp=fopen(aa.txt,WB )
15、 )=空打印(無法打開文件n )。 exit(1); printf (請輸入10個學(xué)生的數(shù)據(jù)for(i=0; iname、知識點為: 1、文件定位2 .文件的隨機讀寫、三、相關(guān)知識、隨機讀寫和前面的文字(字節(jié))讀完后,不一定需要后續(xù)的文字(字節(jié))讀寫,文件內(nèi)任意位置需要的文字、指針指向文件開頭的函數(shù)(rewind ()函數(shù))調(diào)用的形式: rewind (文件指針)功能:將文件指針重新移動到文件開頭的位置2. fseek ()函數(shù)fseek (文件指針、片偏移量、開始點功能:用于移動文件內(nèi)部位置的指針移動量如果是正數(shù),則指針向地址的高度方向移動。 如果為負數(shù),則指針向地址低的方向移動。 如果位移量是常數(shù),后綴l的起點必須是0、1或2。 以下三個符號常數(shù)的起點
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年樂都區(qū)面向社會公開招聘社區(qū)工作人員(公共基礎(chǔ)知識)測試題附答案
- 2025年黑河市第二人民醫(yī)院長期招聘臨床醫(yī)生及影像科技師5人考試題庫附答案
- 2025年甘肅省平?jīng)鍪谐缧趴h人民法院招聘備考題庫附答案
- 四川中煙工業(yè)有限責任公司2026年度高層次人才招聘筆試模擬試題及答案解析
- 2026廣西河池市東蘭縣公安局公開招聘警務(wù)輔助人員20人筆試備考題庫及答案解析
- 2026重慶忠縣發(fā)展研究中心公開招聘駕駛員1人筆試備考試題及答案解析
- 2026四川雅安市石棉縣佳業(yè)勞務(wù)派遣有限公司應(yīng)急管理局招聘綜合應(yīng)急救援大隊工作人員擬聘用公示筆試模擬試題及答案解析
- 2026年南寧市明秀東路小學(xué)教育集團春季學(xué)期編外教師招聘若干人筆試參考題庫及答案解析
- 2026河南省科學(xué)院物理研究所鈣鈦礦硅疊層電池項目工程師招聘2人筆試模擬試題及答案解析
- 2026年河北唐山中心醫(yī)院眼科急聘2人筆試模擬試題及答案解析
- 福建省能源石化集團有限責任公司2025年秋季招聘備考題庫及一套完整答案詳解
- 2025年新聞記者資格證及新聞寫作相關(guān)知識題庫附答案
- DB32∕T 5188-2025 經(jīng)成人中心靜脈通路裝置采血技術(shù)規(guī)范
- 深圳市2024-2025學(xué)年九年級上學(xué)期期末考試化學(xué)試卷(含答案)
- 白車身輕量化設(shè)計技術(shù)
- 華師 八年級 數(shù)學(xué) 下冊《17.2 平行四邊形的判定 》課件
- 主板維修課件
- 2026中央紀委國家監(jiān)委機關(guān)直屬單位招聘24人考試筆試模擬試題及答案解析
- 2026年內(nèi)蒙古化工職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試必刷測試卷附答案解析
- GB 46750-2025民用無人駕駛航空器系統(tǒng)運行識別規(guī)范
- 湖南省長沙市雅禮教育集團2024-2025學(xué)年七年級(下)期末數(shù)學(xué)試卷
評論
0/150
提交評論