




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
08任務八用文件完善學生成績管理系統(tǒng)學習情境
前面幾章中實現的學生成績管理系統(tǒng),數據無法保存,如果程序一關閉,那么已經錄入的學生信息就會消失,下次打開程序后,還得重新錄入。而通過文件類型可以實現保存數據的功能。第一部分任務學習引導
8.1文件的概念8.2文件指針8.3文件的基本操作第二部分模塊實現:用文件完善學生成績管理系統(tǒng)第三部分自學與拓展8.4文件的其他操作07任務七用指針實現查詢、修改、添加、刪除學生成績8.1文件的概念所謂文件一般指存儲在外部介質上數據的集合。這個數據集有一個名稱,稱為文件名。實際上在前面的部分中已經多次使用了文件,例如源程序文件、目標文件、可執(zhí)行文件、庫文件(頭文件)等。外部介質如硬盤、U盤、光盤等。操作系統(tǒng)是以文件為單位對數據進行管理的,也就是說,如果想找存在外部介質上的數據,必須先按文件名找到指定的文件,然后再從該文件中讀取數據。要向外部介質上存儲數據也必須先建立一個文件(以文件名標識),然后才能向它輸出數據。8.1文件的概念為了簡化用戶對輸入和輸出設備的操作,操作系統(tǒng)把與主機相連的各種設備都作為文件來處理,這類文件被稱為設備文件。如鍵盤就是標準輸入文件,顯示器為標準輸出文件。從鍵盤上輸入就意味著從標準輸入文件上輸入數據,scanf、getchar函數就屬于這類輸入。在屏幕上顯示有關信息就是向標準輸出文件輸出,printf、putchar函數就是這類輸出。在程序運行時,將一些數據(運行的最終結果或者中間數據)輸出到磁盤上保存起來,以后需要時再從磁盤中輸入到計算機內存,這就需要利用磁盤文件,也就是通常所說的文件。
8.1文件的概念C語言將文件看成是由若干字符(字節(jié))組成的序列。每一個字節(jié)放一個字符的ASCII代碼的文件被稱為ASCII碼文件,或者文本文件。按照內存中的存儲形式原樣存儲到外部介質上的文件就被稱為是二進制文件。如有一個short型整數10000,在內存中占2B,如果按ASCII碼形式,則要輸出5B(每個字符占一個字節(jié)),如圖8-2所示。8.2文件指針當使用一個文件時,操作系統(tǒng)就會為該文件在內存中開辟一個區(qū)域來存放該文件的相關信息,如文件的名字、狀態(tài)、位置等,這些信息保存在一個結構體變量中。該結構體類型是由系統(tǒng)聲明的,取名為FILE。每一個FILE類型變量都用來存放由編譯系統(tǒng)自動放入的對應文件的相關信息,這些信息用戶不必去了解其中的細節(jié)。C語言里的頭文件中有其類型聲明。在程序中可以直接使用FILE類型名定義變量。例如,FILEf;但使用時通常并不這么定義,而是通過一個指向FILE類型的指針變量來定義。一般形式為:FILEfp;fp就被定義為指向文件類型的指針變量,即文件指針。通過文件指針就可對它所指的文件進行各種操作。8.3文件的基本操作定義了文件指針后,就可以通過文件指針來打開文件,然后才能對文件進行其他操作,使用完畢后,最后再通過文件指針進行關閉。本節(jié)將介紹文件的基本操作,它們都是通過C語言的庫函數完成的。1.文件的打開函數(1)用法fopen函數用來打開一個文件。其調用的一般形式為:文件指針名=fopen(文件名,使用文件方式);8.3文件的基本操作其中,①“文件指針名”必須是被說明為FILE類型的指針變量;②“文件名”是被打開文件的文件名,“文件名”是字符串常量或字符串數組。既可以是絕對路徑,如:“d:\\ex\\c\\1.txt”也可以是相對路徑,即可執(zhí)行文件所在路徑下的文件,如:“1.txt”8.3文件的基本操作其中,③“使用文件方式”是指文件的類型和操作要求。使用文件的方式共有12種,表8-1給出了相應的符號、含義和說明。8.3文件的基本操作其中,(2)功能返回一個指向指定文件的指針。(3)說明①在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應的處理。出錯有多種原因,如磁盤故障、磁盤已寫滿。另外,在表8-1中,指定文件須是存在的,如果不存在均會出錯,例如,用只讀方式打開一個不存在的文件等。故為增強程序的可靠性,常用下面的方法打開一個文件。if((fp=fopen("d:\\ex\\c\\1.txt","r"))==NULL){printf("Cannotopenthisfile!\n");exit(1);}這段程序的意義是,如果返回的指針為空,表示不能正常打開文件,則給出提示信息。exit是定義在頭文件里的函數,作用是關閉程序已經打開的所有文件,參數為0時,表示程序正常退出,非0時表示出錯后退出。8.3文件的基本操作其中,②當程序開始運行,系統(tǒng)就打開3個文件指針,分別是:stdin:對應標準輸入文件(鍵盤),stdout:對應標準輸出文件(顯示器),stderr:對應標準出錯輸出(出錯信息),可直接使用。它們是文件指針常量,不能更改文件指針名。8.3文件的基本操作2.文件的關閉函數(1)用法fclose函數用來打開一個文件。其調用的一般形式為:fclose(文件指針名);例如,fclose(fp);(2)功能關閉文件指針所指向的文件。正常完成關閉文件操作時,fclose函數返回值為0,返回EOF(即1)則表示有錯誤發(fā)生。8.3文件的基本操作2.文件的關閉函數(3)說明文件一旦使用完畢,應用關閉文件函數把文件關閉,以避免文件的數據丟失等錯誤。關閉就是系統(tǒng)釋放存放該文件的相關信息等內存區(qū)域,使文件指針與文件脫鉤。8.3文件的基本操作3.格式化讀函數(1)用法fscanf函數用來打開一個文件。其調用的一般形式為:fscanf(文件指針名,格式字符串,輸入表列);例如,fscanf(fp,"%d%s",&i,s);8.3文件的基本操作3.格式化讀函數(2)功能從文件中按照一定格式讀取數據到指定變量。(3)說明它與scanf函數的功能相仿,都是格式化讀。只不過scanf函數是從標準輸入(鍵盤)得到數據,而fscanf函數是從文件中(通過文件指針)得到。要注意指定文件必須是以讀、讀寫方式打開的。8.3文件的基本操作3.格式化讀函數【例8-1】在文件(C:\)上有如下字符:張三100,請將其分別賦給一個字符串和一個整數。程序代碼如下:#include""#include""/exit函數在此頭函數中定義/voidmain(){FILEfp;charname[10];intn;if((fp=","r"))==NULL){/按照只讀方式打開文件/printf("Cannotopenc:\\test.dat\n");exit(1);}fscanf(fp,"%s%d",name,&n);printf("name:%s\nn:%d\n",name,n);fclose(fp);/用完要關閉文件/}8.3文件的基本操作4.格式化寫函數(1)用法fprintf函數用來打開一個文件。其調用的一般形式為:fprintf(文件指針名,格式字符串,輸出表列);例如,fprintf(fp,"%d%s",i,s);8.3文件的基本操作4.格式化寫函數(2)功能將數據從內存中按照一定格式輸出到文件中。(3)說明它與printf函數的功能相仿,都是格式化寫。只不過printf函數是向標準輸出(顯示器)寫數據,而fprintf函數是向磁盤文件中(通過文件指針)寫。要注意指定文件必須是以寫、讀寫或追加方式打開的。8.3文件的基本操作4.格式化寫函數【例8-2】從鍵盤上輸入一個字符串和一個整數,并把它添加到【例8-1】的文件(C:\)中,如李四90。#include""#include""/exit函數在此頭函數中定義/voidmain(){FILEfp;charname[10];intn;if((fp=","a"))==NULL){/按照添加方式打開文件/printf("Cannotopenc:\\test.dat\n");exit(1);}scanf("%s%d",name,&n);fprintf(fp,"\n%s%d",name,n);fclose(fp);/用完要關閉文件/}第二部分模塊實現:用文件完善學生成績管理系統(tǒng)1.對子函數的調用改變原來的調用方式,例如:xueshengnumber=mycreat(xueshengnumber,record);改成:mycreat();相應的函數聲明為:voidmycreat();其他的依此類推,下面給出子函數聲明。voidprintmenu();voidmyshow();voidmyselect();voidmymodify();voidmyadd();voidmydelete();voidmysort();第二部分模塊實現:用文件完善學生成績管理系統(tǒng)2.利用文件對子函數進行改寫(1)錄入學生成績(2)顯示學生成績(3)查詢學生成績(4)修改學生成績(5)添加學生記錄(6)刪除學生記錄(7)排序學生成績8.4文件的其他操作1.字符讀、寫函數(1)用法fgetc函數的功能是從指定的文件中讀入一個字符。函數調用的形式為:字符變量=fgetc(文件指針名);fputc函數的功能是把一個字符寫入指定的文件中。函數調用的形式為:fputc(字符變量,文件指針名);8.4文件的其他操作1.字符讀、寫函數(2)功能字符讀寫函數是以字符(字節(jié))為單位的讀寫函數。每次可從文件讀出或向文件寫入一個字符。(3)說明fgetc函數使用時,指定的文件必須是以讀或讀寫方式打開的;fputc函數使用時,指定的文件必須是以讀或讀寫方式打開的。8.4文件的其他操作2.字符串讀、寫函數(1)用法fgets函數的功能是從指定的文件中讀一個字符串到字符數組中。函數調用的形式為:fgets(字符數組名,n,文件指針);fputs函數的功能是向指定的文件寫入一個字符串。其調用形式為:fputs(字符串,文件指針);fgets函數中,n是一個正整數。表示從文件中讀出的字符串不超過n1個字符。在讀入的最后一個字符后加上串結束標志'\0'。例如:fgets(str,n,fp);的意義是從fp所指的文件中讀出n1個字符送入字符數組str中。在讀出n1個字符之前,如果遇到了換行符或文件結束符EOF,則讀出結束。8.4文件的其他操作2.字符串讀、寫函數(2)功能字符串讀寫函數是以字符串(字節(jié))為單位的讀寫函數。每次可從文件讀出或向文件寫入一個字符。(3)說明fgets函數使用時,該文件必須是以讀或讀寫方式打開的;fputs函數使用時,該文件必須是以讀或讀寫方式打開的。8.4文件的其他操作3.數據塊讀、寫函數(1)用法fread讀數據塊函數調用的一般形式為:fread(buffer,size,count,fp);fwrite寫數據塊函數調用的一般形式為:fwrite(buffer,size,count,fp);其中,buffer是一個指針,在fread函數中,表示存放輸入數據的首地址;在fwrite函數中,表示存放輸出數據的起始地址;size表示每個數據塊的字節(jié)數;count表示待讀寫的數據塊塊數。
8.4文件的其他操作3.數據塊讀、寫函數(2)功能用于整塊數據的讀寫函數??捎脕碜x寫一組數據,如一個數組元素,一個結
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術咨詢技術服務合同
- 股份代持協(xié)議模板
- 全新夫妻離婚財產協(xié)議
- 火鍋店獎懲制度
- 合同能源管理在熱計量節(jié)能改造中的實踐案例
- 雁門太守行市公開課教案
- 中北大學本科培養(yǎng)方案
- 水電站綜自改造施工方案
- 保安開除員工合同樣本
- 個人變壓器合同樣本
- 靜療橫斷面調查護理
- DB45T 1056-2014 土地整治工程 第2部分:質量檢驗與評定規(guī)程
- 2025年3月《提振消費專項行動方案》解讀學習課件
- 4-6歲幼兒同伴交往能力量表
- 人教版 數學一年級下冊 第三單元 100以內數的認識綜合素養(yǎng)評價(含答案)
- T-CEPPC 18-2024 電力企業(yè)數字化轉型成熟度評價指南
- XX化工企業(yè)停工安全風險評估報告
- 2025年濟源職業(yè)技術學院單招職業(yè)技能測試題庫學生專用
- 全國川教版信息技術八年級下冊第二單元第3節(jié)《評價文創(chuàng)作品》教學設計
- 急診科護理創(chuàng)新管理
- 臨邊防護安全培訓課件
評論
0/150
提交評論