C語言程序設(shè)計(jì)-第十章 學(xué)生信息的讀取與保存_第1頁
C語言程序設(shè)計(jì)-第十章 學(xué)生信息的讀取與保存_第2頁
C語言程序設(shè)計(jì)-第十章 學(xué)生信息的讀取與保存_第3頁
C語言程序設(shè)計(jì)-第十章 學(xué)生信息的讀取與保存_第4頁
C語言程序設(shè)計(jì)-第十章 學(xué)生信息的讀取與保存_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件項(xiàng)目十十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存- -文文件件C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件2【項(xiàng)目要求項(xiàng)目要求】 從文件從文件a.txta.txt讀取某班的期末考試成績(jī),按總分讀取某班的期末考試成績(jī),按總分排序后寫入另外一個(gè)文件排序后寫入另外一個(gè)文件b.txtb.txt。 在上一章實(shí)現(xiàn)的項(xiàng)目中發(fā)現(xiàn),每次運(yùn)行程序都要輸在上一章實(shí)現(xiàn)的項(xiàng)目中發(fā)現(xiàn),每次運(yùn)行程序都要輸入大量的數(shù)據(jù),如果用我們以前學(xué)過的輸入的方法入大量的數(shù)據(jù),如果用我們以前學(xué)過的輸入的

2、方法就很不方便,最常用的方法就是預(yù)先將這些數(shù)據(jù)寫就很不方便,最常用的方法就是預(yù)先將這些數(shù)據(jù)寫到一個(gè)文件里,再將這個(gè)文件存放在磁盤上,需要到一個(gè)文件里,再將這個(gè)文件存放在磁盤上,需要時(shí)再將數(shù)據(jù)從該文件中讀取。時(shí)再將數(shù)據(jù)從該文件中讀取。為實(shí)現(xiàn)本項(xiàng)目需要經(jīng)過打開文件、從文件進(jìn)行數(shù)據(jù)為實(shí)現(xiàn)本項(xiàng)目需要經(jīng)過打開文件、從文件進(jìn)行數(shù)據(jù)的讀的讀/ /寫、關(guān)閉文件指針三步。寫、關(guān)閉文件指針三步。 【項(xiàng)目分析項(xiàng)目分析】C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件3問題情境及實(shí)現(xiàn)問題情境及實(shí)現(xiàn)v#include #include v#define N 100#define

3、 N 100vtypedeftypedef structstruct student studentv vchar num11;char num11;vchar name9;char name9;vintint score3; score3;vfloat float avravr; ;vSTU;STU;vvoid void fsort(STUfsort(STU s,ints,int n) / n) /對(duì)結(jié)構(gòu)體數(shù)組中的對(duì)結(jié)構(gòu)體數(shù)組中的n n個(gè)數(shù)據(jù)進(jìn)行簡(jiǎn)單選擇排序個(gè)數(shù)據(jù)進(jìn)行簡(jiǎn)單選擇排序v vintint i,j,ki,j,k; ;vSTU t;STU t;v for(ifor(i=0;in-1;i

4、+)=0;in-1;i+)v vk=i;k=i;v for(jfor(j=i+1;j=i+1;jn;jn;j+)+)v if(sk.avrif(sk.avr sj.avrsj.avr) k=j;) k=j;v if(iif(i!=k)!=k)v vt=t=si;sisi;si=sk;sksk;sk=t;=t;v v v C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件4問題情境及實(shí)現(xiàn)問題情境及實(shí)現(xiàn)vvoid main()void main()v vFILE FILE * *fp1,fp1,* *fp2;fp2;vSTU STU sNsN;vintint

5、 i,n,j,sumi,n,j,sum; ;vif(fp1=fopen(f:cresource10w2.txt,r)=NULL)if(fp1=fopen(f:cresource10w2.txt,r)=NULL)v v printfprintf(找不到該文件找不到該文件n);/n);/* *如果打不開文件則給出相應(yīng)的提示如果打不開文件則給出相應(yīng)的提示* */ /v getchgetch();();v exit(0); exit(0);v vi=0;i=0;vwhile(!feof(fp1)/while(!feof(fp1)/* *從文件中讀取有關(guān)數(shù)據(jù),一直讀到文件末尾從文件中讀取有關(guān)數(shù)據(jù),一直讀

6、到文件末尾* */ /v vfscanf(fp1,%s%s,si.num,);fscanf(fp1,%s%s,si.num,);v vsum=0;sum=0;vfor(jfor(j=0;j3;j+)=0;j3;j+)v vfscanf(fp1,%d,&si.scorej);fscanf(fp1,%d,&si.scorej);vsum+=sum+=si.scorejsi.scorej;v vsi.avrsi.avr=sum/3.0;/=sum/3.0;/* *同時(shí)求出平均分同時(shí)求出平均分* */ /vi+;i+;v C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目

7、十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件5問題情境及實(shí)現(xiàn)問題情境及實(shí)現(xiàn)vfclose(fp1); /fclose(fp1); /* *關(guān)閉文件關(guān)閉文件* */ /vn=i;n=i;vfor(ifor(i=0;i=0;in;in;i+)+)v vprintf(nprintf(n第第%d%d個(gè)學(xué)生的信息:個(gè)學(xué)生的信息:%s %s,i+1,si.num,);%s %s,i+1,si.num,);vfor(jfor(j=0;j3;j+)=0;j3;j+)vprintfprintf( %( %d,si.scorejd,si.scorej););v vfsort(

8、s,nfsort(s,n););vfp2=fopen(f:cresource10w2_2.txt,w);/fp2=fopen(f:cresource10w2_2.txt,w);/* *打開文件進(jìn)行保存數(shù)據(jù)打開文件進(jìn)行保存數(shù)據(jù)* */ /vfor(ifor(i=0;i=0;in;in;i+)+)v vfprintf(fp2,%s %fprintf(fp2,%s %s,si.num,s,si.num,););vfor(jfor(j=0;j3;j+)=0;j文件讀文件讀/寫寫-關(guān)閉文件關(guān)閉文件C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存

9、-文件文件162 2 文件的打開與關(guān)閉文件的打開與關(guān)閉(1)(1)2.1 2.1 打開文件打開文件函數(shù)原型:函數(shù)原型:FILE *fopen (char *name , char *mode)要打開的文件名要打開的文件名使用文件方式使用文件方式返回值:返回值:正常打開,返回指向文件結(jié)構(gòu)體的指針;正常打開,返回指向文件結(jié)構(gòu)體的指針; 打開失敗,為打開失敗,為NULLC語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件172 2 文件的打開與關(guān)閉文件的打開與關(guān)閉(2)(2)2.1 2.1 打開文件打開文件課堂練習(xí):課堂練習(xí):打開當(dāng)前文件夾下的打開當(dāng)前文件夾下的

10、namelist.txt文件,打開方文件,打開方式為追加式為追加打開打開d盤盤test文件夾下的文件夾下的namelist.txt文件,如果文件,如果該文件不存在,就創(chuàng)建該文件,然后增加文件內(nèi)容該文件不存在,就創(chuàng)建該文件,然后增加文件內(nèi)容課堂練習(xí)編寫課堂練習(xí)編寫C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件182 2 文件的打開與關(guān)閉文件的打開與關(guān)閉(3)(3)2.2 2.2 關(guān)閉文件關(guān)閉文件函數(shù)原型:函數(shù)原型: int fclose( FILE *fp )文件打開時(shí)返回文件打開時(shí)返回的文件類型指針的文件類型指針返回值:返回值:正常關(guān)閉為正常關(guān)閉為0

11、; 出錯(cuò)時(shí)出錯(cuò)時(shí),非非0課堂練習(xí):關(guān)閉前面課堂練習(xí)中打開的文件課堂練習(xí):關(guān)閉前面課堂練習(xí)中打開的文件返回主菜單返回主菜單C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件193 3 文件的讀寫文件的讀寫(1)(1)3.1 3.1 文件的順序讀寫文件的順序讀寫文件字符輸入文件字符輸入/ /輸出函數(shù)輸出函數(shù)函數(shù)原型:函數(shù)原型:int fputc ( int c, FILE *fp)功能:把一字節(jié)功能:把一字節(jié)代碼代碼c寫入寫入fp指向的文件中指向的文件中返值:正常,返回返值:正常,返回c; ;出錯(cuò),為出錯(cuò),為EOF函數(shù)原型:函數(shù)原型:int fgetc (

12、FILE *fp )功能:從功能:從fp指向的文件中指向的文件中讀取讀取一字節(jié)代碼一字節(jié)代碼返值:正常,返回讀到的代碼值;返值:正常,返回讀到的代碼值; 讀到文件尾讀到文件尾( (EOFEOF) )或出錯(cuò)或出錯(cuò)( (NULLNULL) )為止為止C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件203 3 文件的讀寫文件的讀寫(1)(1)3.1 3.1 文件的順序讀寫文件的順序讀寫文件字符輸入文件字符輸入/ /輸出函數(shù)輸出函數(shù)例例1:從鍵盤輸入若干字符,逐個(gè)將它們寫入文從鍵盤輸入若干字符,逐個(gè)將它們寫入文件件”file.txt”中,直到輸入一個(gè)中,直到輸

13、入一個(gè)”*”為止。為止。例例1 編寫編寫C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件213 3 文件的讀寫文件的讀寫(2)(2)3.1 3.1 文件的順序讀寫文件的順序讀寫文件字符串輸入文件字符串輸入/ /輸出函數(shù)輸出函數(shù)函數(shù)原型:函數(shù)原型:int fputs(char *string, FILE *fp);功能:把字符串功能:把字符串寫入寫入fp指向的文件中指向的文件中返值:正常,返回返值:正常,返回0; ;出錯(cuò),為出錯(cuò),為EOF函數(shù)原型:函數(shù)原型:char *fgets(char *s, int n, FILE *fp);功能:從功能:從fp指

14、向的文件中指向的文件中讀取長(zhǎng)度不超過讀取長(zhǎng)度不超過n n- -1 1個(gè)字符個(gè)字符返值:正常,返回讀到字符串的首地址;返值:正常,返回讀到字符串的首地址; 讀到文件尾讀到文件尾(EOF)或出錯(cuò)或出錯(cuò)(NULL)為止為止C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件223 3 文件的讀寫文件的讀寫(3)(3)3.1 3.1 文件的順序讀寫文件的順序讀寫文件的格式化輸入文件的格式化輸入/ /輸出函數(shù)輸出函數(shù)int fprintf(FILE *fp,const char *format,argument,)int fscanf(FILE *fp,const

15、char *format,address,)功能:按格式對(duì)文件進(jìn)行功能:按格式對(duì)文件進(jìn)行I/OI/O操作操作返值:成功返值:成功, ,返回返回I/OI/O的個(gè)數(shù)的個(gè)數(shù); ;出錯(cuò)或文件尾出錯(cuò)或文件尾, ,返回返回EOFEOFC語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件233 3 文件的讀寫文件的讀寫(4)(4)3.1 3.1 文件的順序讀寫文件的順序讀寫文件的格式化輸入文件的格式化輸入/ /輸出函數(shù)輸出函數(shù)例例3:有如下的學(xué)生結(jié)構(gòu)定義,從鍵盤輸入有如下的學(xué)生結(jié)構(gòu)定義,從鍵盤輸入4個(gè)學(xué)生個(gè)學(xué)生的信息,保存到文件的信息,保存到文件name-list.tx

16、t文件中文件中struct student_type char name10; int num; int age; char addr15;例例3 編寫編寫C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件243 3 文件的讀寫文件的讀寫(5)(5)3.1 3.1 文件的順序讀寫文件的順序讀寫文件的數(shù)據(jù)塊輸入文件的數(shù)據(jù)塊輸入/ /輸出函數(shù)輸出函數(shù)實(shí)現(xiàn)文件操作一次讀取一組數(shù)據(jù)實(shí)現(xiàn)文件操作一次讀取一組數(shù)據(jù)size_t fread(void *buffer,size_t size, size_t count,FILE *fp)size_t fwrite(voi

17、d *buffer,size_t size, size_t count,FILE *fp)指向要輸入指向要輸入/ /輸輸出數(shù)據(jù)塊的首地出數(shù)據(jù)塊的首地址的指針址的指針每個(gè)要讀每個(gè)要讀/ /寫的寫的數(shù)據(jù)塊的大小數(shù)據(jù)塊的大?。ㄗ止?jié)數(shù))(字節(jié)數(shù))要讀要讀/ /寫的數(shù)寫的數(shù)據(jù)塊的個(gè)數(shù)據(jù)塊的個(gè)數(shù)要讀要讀/ /寫的文寫的文件指針件指針返值:返值:成功,返回讀成功,返回讀/寫的塊數(shù);出錯(cuò)或文件尾,返回寫的塊數(shù);出錯(cuò)或文件尾,返回0C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件253 3 文件的讀寫文件的讀寫(6)(6)2 2 文件的隨機(jī)讀寫操作文件的隨機(jī)讀寫操作re

18、windrewind函數(shù)函數(shù)將文件的指針指向用戶指定的位置,進(jìn)行將文件的指針指向用戶指定的位置,進(jìn)行文件操作文件操作rewindrewind函數(shù)函數(shù)函數(shù)原型:函數(shù)原型:void rewind(FILE *fp)功能:重置文件位置指針到文件開頭功能:重置文件位置指針到文件開頭返值:無返值:無C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件263 3 文件的讀寫文件的讀寫(7)(7)2 2 文件的隨機(jī)讀寫操作文件的隨機(jī)讀寫操作rewindrewind函數(shù)函數(shù)例例4: 分析下面程序的功能分析下面程序的功能#include main() FILE *fp1,*

19、fp2; fp1=fopen(file1.c,r); fp2=fopen(file2.c,w); while(!feof(fp1) putchar(fgetc(fp1); rewind(fp1); while(!feof(fp1) fputc(fgetc(fp1),fp2); fclose(fp1); fclose(fp2);從文件中第一次將它內(nèi)容顯從文件中第一次將它內(nèi)容顯示在屏幕中,第二次讀取將示在屏幕中,第二次讀取將其復(fù)制到另一個(gè)文件中其復(fù)制到另一個(gè)文件中C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件273 3 文件的讀寫文件的讀寫(7)(7)2 2 文件的隨機(jī)讀寫操作文件的隨機(jī)讀寫操作fseekfseek函數(shù)函數(shù)fseekfseek函數(shù)函數(shù)函數(shù)原型:函數(shù)原型: int fseek(FILE *fp, long offset, int whence)功能:改變文件位置指針的位置功能:改變文件位置指針的位置返值:成功,返回返值:成功,返回0 0;失敗,返回非;失敗,返回非0 0值值C語言程序設(shè)計(jì)語言程序設(shè)計(jì)項(xiàng)目十項(xiàng)目十 學(xué)生信息的讀取與保存學(xué)生信息的讀取與保存-文件文件283 3 文件的讀寫文件的讀寫(8)(8)2 2 文件的隨機(jī)讀寫操作文件的隨機(jī)讀寫操作fseekfse

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論