版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第九章 文件l文件概述 l文件的打開(kāi)與關(guān)閉 l文件的讀寫(xiě)l文件的定位 存儲(chǔ)設(shè)備存儲(chǔ)設(shè)備 有關(guān)存儲(chǔ)有關(guān)存儲(chǔ)內(nèi)部存儲(chǔ)設(shè)備內(nèi)部存儲(chǔ)設(shè)備外部部存儲(chǔ)設(shè)備外部部存儲(chǔ)設(shè)備文件概述 o 概念概念文件一般指存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)文件一般指存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合。數(shù)據(jù)是以文件的形式存放在外部介的集合。數(shù)據(jù)是以文件的形式存放在外部介質(zhì)質(zhì)( (如磁盤(pán)如磁盤(pán)) )上。操作系統(tǒng)是以文件為單位對(duì)上。操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的。數(shù)據(jù)進(jìn)行管理的。輸入輸出設(shè)備是一種特殊的文件輸入輸出設(shè)備是一種特殊的文件C語(yǔ)言把文件看作是一個(gè)字符語(yǔ)言把文件看作是一個(gè)字符(字節(jié)字節(jié))的序列,的序列,即由一個(gè)一個(gè)字符即由一個(gè)一個(gè)字符(字
2、節(jié)字節(jié))的數(shù)據(jù)順序組成。的數(shù)據(jù)順序組成。 文件概述 o 分類(lèi)分類(lèi)根據(jù)數(shù)據(jù)的組織形式,可分為根據(jù)數(shù)據(jù)的組織形式,可分為ASCIIASCII文件和二進(jìn)制文件文件和二進(jìn)制文件。 如,整數(shù)如,整數(shù)1000010000,在內(nèi)存中或在磁盤(pán)上按二,在內(nèi)存中或在磁盤(pán)上按二進(jìn)制與進(jìn)制與ASCIIASCII存儲(chǔ)格式如下圖存儲(chǔ)格式如下圖 0010011100010000內(nèi)存中存儲(chǔ)形式 00110001001100000011000000110000ASCII存儲(chǔ)形式 0010011100010000二進(jìn)制存儲(chǔ)形式 文件概述 o 流式文件流式文件 輸入輸出以字節(jié)流或二進(jìn)制流方式進(jìn)輸入輸出以字節(jié)流或二進(jìn)制流方式進(jìn)行,數(shù)
3、據(jù)流的開(kāi)始和結(jié)束僅受程序控制而不受物行,數(shù)據(jù)流的開(kāi)始和結(jié)束僅受程序控制而不受物理符號(hào)理符號(hào)( (如回車(chē)換行符如回車(chē)換行符) )控制控制 o 文件的處理方法文件的處理方法 n 緩沖文件系統(tǒng)緩沖文件系統(tǒng) 文件概述 n 非緩沖文件系統(tǒng)非緩沖文件系統(tǒng) 指系統(tǒng)不自動(dòng)開(kāi)辟確定指系統(tǒng)不自動(dòng)開(kāi)辟確定大小的緩沖區(qū),而由程序?yàn)槊總€(gè)文件設(shè)定大小的緩沖區(qū),而由程序?yàn)槊總€(gè)文件設(shè)定緩沖緩沖p描述文件信息的結(jié)構(gòu)體描述文件信息的結(jié)構(gòu)體在緩沖文件系統(tǒng)中,每個(gè)被使用的文件都在緩沖文件系統(tǒng)中,每個(gè)被使用的文件都在內(nèi)存中開(kāi)辟一個(gè)區(qū),用來(lái)存放有關(guān)信息。在內(nèi)存中開(kāi)辟一個(gè)區(qū),用來(lái)存放有關(guān)信息。這些信息保存在一個(gè)結(jié)構(gòu)體變量中。這些信息保存在
4、一個(gè)結(jié)構(gòu)體變量中。文件概述 struct _iobuf char *_ptr; /文件輸入的下一個(gè)位置 int _cnt; /當(dāng)前緩沖區(qū)的相對(duì)位置 char *_base; /文件的起始位置 int _flag; /文件標(biāo)志 int _file; /文件的有效性驗(yàn)證 int _charbuf; /檢查緩沖區(qū)狀況 int _bufsiz; /緩沖區(qū)的尺寸 char *_tmpfname; /臨時(shí)文件名 ;typedef struct _iobuf FILE; 文件概述 定義定義FILEFILE類(lèi)型的變量類(lèi)型的變量FILE f5;FILE f5;FILE FILE * *fp;fp;通過(guò)通過(guò)fpf
5、p指向的結(jié)構(gòu)體可以知道有關(guān)文件的信指向的結(jié)構(gòu)體可以知道有關(guān)文件的信息,從而可以對(duì)打開(kāi)的文件進(jìn)行訪問(wèn)息,從而可以對(duì)打開(kāi)的文件進(jìn)行訪問(wèn)文件概述 o 文件的處理過(guò)程文件的處理過(guò)程創(chuàng)建文件、打開(kāi)文件、讀寫(xiě)文件和關(guān)閉文件創(chuàng)建文件、打開(kāi)文件、讀寫(xiě)文件和關(guān)閉文件對(duì)已建立的文件操作過(guò)程:對(duì)已建立的文件操作過(guò)程: 聲明文件指針聲明文件指針(*fp) fp=打開(kāi)文件打開(kāi)文件 對(duì)打開(kāi)的文件操作對(duì)打開(kāi)的文件操作 關(guān)閉文件關(guān)閉文件 文件概述 o 文件的處理過(guò)程文件的處理過(guò)程創(chuàng)建文件、打開(kāi)文件、讀寫(xiě)文件和關(guān)閉文件創(chuàng)建文件、打開(kāi)文件、讀寫(xiě)文件和關(guān)閉文件對(duì)未建立的文件操作過(guò)程對(duì)未建立的文件操作過(guò)程: 創(chuàng)建文件,獲得訪問(wèn)文件的
6、指針創(chuàng)建文件,獲得訪問(wèn)文件的指針 對(duì)創(chuàng)建的文件操作對(duì)創(chuàng)建的文件操作 關(guān)閉文件關(guān)閉文件 文件的打開(kāi)與關(guān)閉 o 打開(kāi)文件的函數(shù)打開(kāi)文件的函數(shù) fopenfopen格式格式: : FILE FILE * *fopen(char fopen(char * *filename,char filename,char * *type)type)參數(shù)參數(shù): : filename filename 文件名稱(chēng)文件名稱(chēng) type type 打開(kāi)文件方式打開(kāi)文件方式功能:功能:以某一種方式打開(kāi)存儲(chǔ)在磁盤(pán)上的文以某一種方式打開(kāi)存儲(chǔ)在磁盤(pán)上的文 件件返值:正常,返值:正常,指向打開(kāi)文件的指針指向打開(kāi)文件的指針;出錯(cuò),;出
7、錯(cuò),為為空空f(shuō)openfopen函數(shù)的打開(kāi)方式的參數(shù)表函數(shù)的打開(kāi)方式的參數(shù)表type讀寫(xiě)性讀寫(xiě)性文本文本/2進(jìn)制文件進(jìn)制文件功能功能“r”只讀只讀文本文本打開(kāi)舊文件打開(kāi)舊文件“w”只寫(xiě)只寫(xiě)文本文本為輸出建立一個(gè)新文件為輸出建立一個(gè)新文件 “a”添加添加文本文本有就打開(kāi)無(wú)則建新有就打開(kāi)無(wú)則建新“r+”讀讀/寫(xiě)寫(xiě)不限制不限制打開(kāi)打開(kāi)“w+”讀讀/寫(xiě)寫(xiě)不限制不限制為輸出建立一個(gè)新文件為輸出建立一個(gè)新文件“a+”讀讀/添加添加不限制不限制有就打開(kāi)無(wú)則建新有就打開(kāi)無(wú)則建新注:注:可加的后綴為可加的后綴為t t、b b。加。加b b表示文件以二進(jìn)制形式進(jìn)表示文件以二進(jìn)制形式進(jìn) 行操作,行操作,t t一般不
8、使用使用一般不使用使用 文件的打開(kāi)與關(guān)閉 o 關(guān)閉文件的函數(shù)關(guān)閉文件的函數(shù) fclosefclose格式格式: : int fclose(FILE int fclose(FILE * *stream)stream) 參數(shù)參數(shù): stream : stream 文件名稱(chēng)文件名稱(chēng)功能:功能:關(guān)閉一個(gè)文件或設(shè)備關(guān)閉一個(gè)文件或設(shè)備返值:正常,返值:正常,0 0;出錯(cuò),;出錯(cuò),EOFEOF(-1-1)文件的打開(kāi)與關(guān)閉 o 注意:注意:(1)(1)當(dāng)文件不再讀當(dāng)文件不再讀/ /寫(xiě)時(shí),及時(shí)關(guān)閉文件,以釋寫(xiě)時(shí),及時(shí)關(guān)閉文件,以釋放系統(tǒng)的資源(文件結(jié)構(gòu)變量)。放系統(tǒng)的資源(文件結(jié)構(gòu)變量)。(2)(2)將數(shù)據(jù)寫(xiě)回
9、磁盤(pán)。將數(shù)據(jù)寫(xiě)回磁盤(pán)。例例9-1 打開(kāi)和關(guān)閉一個(gè)文件打開(kāi)和關(guān)閉一個(gè)文件#include “stdio.hvoid main() char a20; FILE *fp; printf(enter name of file:); scanf(%s,a); fp=fopen(a,r); if(fp=NULL) printf(cant open this file:%s,a); exit(0); elseprintf(Congratulations!The file %s is opened!,a);fclose(fp);getch();文件的讀寫(xiě) o 文件尾測(cè)試函數(shù)文件尾測(cè)試函數(shù) feof格式格式:
10、 : int feof(FILE *stream)參數(shù)參數(shù): stream : stream 文件名稱(chēng)文件名稱(chēng)功能:功能:測(cè)試文件測(cè)試文件fpfp的文件位置指針是否指向的文件位置指針是否指向文件尾文件尾 返值:返值:到了文件末尾到了文件末尾,非非0 0;沒(méi)到文件末尾沒(méi)到文件末尾,0 0文件的讀寫(xiě) o 按字符方式讀函數(shù)按字符方式讀函數(shù) fgetcfgetc格式格式: : int fgetc(FILE int fgetc(FILE * *stream)stream)參數(shù)參數(shù): stream : stream 文件名稱(chēng)文件名稱(chēng)功能:功能:從指定的文件讀入一個(gè)字符,該文件從指定的文件讀入一個(gè)字符,該文
11、件必須是以讀或讀寫(xiě)方式打開(kāi)的必須是以讀或讀寫(xiě)方式打開(kāi)的 返值:返值:讀出的字符讀出的字符例例9-2 9-2 將文件中的內(nèi)容輸出到屏幕將文件中的內(nèi)容輸出到屏幕main()char ch,file20;FILE *fp;printf(enter files name:);scanf(%s,file);fp=fopen(file,r);if(fp=NULL) printf(cant open file!);else while(!feof(fp) ch=fgetc(fp);putch(ch); fclose(fp); getch(); 文件的讀寫(xiě) o 按字符方式寫(xiě)入函數(shù)按字符方式寫(xiě)入函數(shù) fputc
12、fputc格式格式: : int fputc(int ch,FILE int fputc(int ch,FILE * *stream)stream) 參數(shù)參數(shù): ch : ch 要寫(xiě)入的字符要寫(xiě)入的字符stream stream 文件名稱(chēng)文件名稱(chēng)功能:功能:將字符寫(xiě)入指定的文件將字符寫(xiě)入指定的文件 返值:返值:成功,輸入的字符;失敗,返回成功,輸入的字符;失敗,返回 EOF(-1)EOF(-1) 例例9-3 9-3 將鍵盤(pán)輸入字符串存入到文件中將鍵盤(pán)輸入字符串存入到文件中main() char ch,file20,a100; int i; FILE *fp; printf(enter file
13、s name:); scanf(%s,file); fp=fopen(file,w); if(fp=NULL) printf(no file!); else printf(enter a string:); scanf(%s,a); for(i=0;istrlen(a);i+) fputc(ai,fp); fclose(fp); getch();例例9-4 9-4 將一個(gè)磁盤(pán)文件中的信息復(fù)制到另一個(gè)磁盤(pán)文件中將一個(gè)磁盤(pán)文件中的信息復(fù)制到另一個(gè)磁盤(pán)文件中 main() FILE *in, *out; char ch, infile10, outfile10; printf(enter a fil
14、e-in name:); scanf(%s,infile); if(in=fopen(infile,r)=NULL) printf(cannot open infilen); exit(0); printf(enter a file-out name:); scanf(%s,outfile); if(out=fopen(outfile,w)=NULL) printf(cannot open outfilen); exit(0); while(!feof(in) fputc(fgetc(in),out); fclose(in); fclose(out);文件的讀寫(xiě) o 按行方式按行方式讀函數(shù)讀函
15、數(shù) fgetsfgets格式格式: : char char * *fgets(char fgets(char * *string,int n,FILE string,int n,FILE * *stream)stream)參數(shù)參數(shù): : stringstring 讀出字符串的首地址讀出字符串的首地址 n n 讀出字符數(shù)讀出字符數(shù) stream stream 文件結(jié)構(gòu)體指針文件結(jié)構(gòu)體指針功能:功能:從文件中讀取一個(gè)長(zhǎng)度為從文件中讀取一個(gè)長(zhǎng)度為n-1n-1的字符串存入的字符串存入 stringstring中中, ,讀入讀入n-1n-1個(gè)字符結(jié)束之前遇到換行符或者個(gè)字符結(jié)束之前遇到換行符或者EOF(
16、EOF(文件結(jié)束符文件結(jié)束符) ),則結(jié)束讀入,則結(jié)束讀入 返值:返值:讀出字符串的首地址或空讀出字符串的首地址或空文件的讀寫(xiě) o 按行方式按行方式寫(xiě)函數(shù)寫(xiě)函數(shù) fputsfputs格式格式: : int fputs(char int fputs(char * *string,FILE string,FILE * *stream)stream)參數(shù)參數(shù): : stringstring 字符串的首地址字符串的首地址 streamstream文件結(jié)構(gòu)體指針文件結(jié)構(gòu)體指針功能:功能:把以把以stringstring為起始地址的字符串輸出到為起始地址的字符串輸出到fpfp指指定的文件中,最后的定的文件
17、中,最后的00不輸出不輸出 返值:寫(xiě)入到文件成功,返回返值:寫(xiě)入到文件成功,返回0 0;否則返回非;否則返回非0 0例例9-59-5將文件將文件f1f1的內(nèi)容按行方式進(jìn)行讀的內(nèi)容按行方式進(jìn)行讀/ /寫(xiě)復(fù)制到寫(xiě)復(fù)制到文件文件f2f2中中 main()FILE *in,*out;char f120,f220,str128;printf(nEnter a source filename:);gets(f1);printf(nEnter a destination filename:);gets(f2);if(in=fopen(f1,r)=NULL) /*打開(kāi)源文件打開(kāi)源文件*/printf(cann
18、ot open file %sn,f1);exit(0); if(out=fopen(f2,w)=NULL) /*打開(kāi)目標(biāo)文件打開(kāi)目標(biāo)文件*/printf(cannot open file %sn,f2);exit(0); while(!feof(in)fputs(fgets(str,128,in),out); /*按行方式進(jìn)行讀按行方式進(jìn)行讀/寫(xiě)寫(xiě)*/fclose(in);fclose(out);文件的讀寫(xiě) o 按格式讀按格式讀函數(shù)函數(shù) fscanf()fscanf()格式格式: :int fscanf(FILE int fscanf(FILE * *stream,charstream,ch
19、ar* *format,argument,format,argument,) 參數(shù)參數(shù): stream : stream 文件結(jié)構(gòu)體指針文件結(jié)構(gòu)體指針 format format 格式字符串格式字符串功能:功能:按格式從文件按格式從文件streamstream中讀取數(shù)據(jù)中讀取數(shù)據(jù) 返值:返值:讀入成功,函數(shù)返回所讀數(shù)據(jù)的個(gè)數(shù)讀入成功,函數(shù)返回所讀數(shù)據(jù)的個(gè)數(shù);否則返回;否則返回 EOF EOF 文件的讀寫(xiě) o 按格式寫(xiě)按格式寫(xiě)函數(shù)函數(shù) fprintffprintf()()格式格式: :int fprintf(FILE int fprintf(FILE * *stream,char stream,
20、char * *format,argument,format,argument,) 參數(shù)參數(shù): stream : stream 文件名文件名 format format 格式字符串格式字符串功能:功能:按格式寫(xiě)取數(shù)據(jù)到文件按格式寫(xiě)取數(shù)據(jù)到文件streamstream中中 返值:寫(xiě)入成功,返值:寫(xiě)入成功,函數(shù)返回寫(xiě)入數(shù)據(jù)的個(gè)數(shù)函數(shù)返回寫(xiě)入數(shù)據(jù)的個(gè)數(shù); 否則返回否則返回EOF EOF 例例9-6 9-6 將鍵盤(pán)輸入字符串存入到文件中將鍵盤(pán)輸入字符串存入到文件中main() char c1=A,c2,s110=Program,s210; int i1=168,i2; float f1=95.56,f
21、2; FILE *fp; fp=fopen(fomat.txt,w ); printf(%c,%d,%7.2f,%sn,c1,i1,f1,s1); fprintf(fp,%c,%d,%7.2f,%sn,c1,i1,f1,s1); fclose(fp); if(fp=fopen(fomat.txt,r)=NULL) printf(Can not open filen); exit(1); fscanf(fp,%c,%d,%f,%s,&c2,&i2,&f2,s2); printf(%c,%d,%7.2f,%sn,c2,i2,f2,s2); fclose(fp); getch
22、(); 文件的讀寫(xiě) o 按塊方式寫(xiě)函數(shù)按塊方式寫(xiě)函數(shù) fwritefwrite格式格式: : int fwrite(void int fwrite(void * *ptr, int size, int nitems, ptr, int size, int nitems, FILE FILE * *stream);stream); 參數(shù)參數(shù):ptr: :ptr: 寫(xiě)入數(shù)據(jù)存放區(qū)域的首地址寫(xiě)入數(shù)據(jù)存放區(qū)域的首地址 sizesize:一次寫(xiě)入的字節(jié)數(shù):一次寫(xiě)入的字節(jié)數(shù) nitemsnitems:寫(xiě)的次數(shù):寫(xiě)的次數(shù) stream stream :文件指針:文件指針 功能:功能:以二進(jìn)制形式以二進(jìn)制形式
23、將數(shù)據(jù)塊寫(xiě)入到將數(shù)據(jù)塊寫(xiě)入到streamstream所指定所指定的文件中的文件中返值:寫(xiě)入成功,返回返值:寫(xiě)入成功,返回1 1;否則返回;否則返回0 0文件的讀寫(xiě) o 按塊方式讀函數(shù)按塊方式讀函數(shù) freadfread格式格式: : int fread(void int fread(void * *ptr, int size, ptr, int size, int nitemsint nitems, , FILE FILE * *stream);stream); 參數(shù)參數(shù):ptr: :ptr: 讀入數(shù)據(jù)存放區(qū)域的首地址讀入數(shù)據(jù)存放區(qū)域的首地址 sizesize:一次讀入的字節(jié)數(shù):一次讀入的字節(jié)
24、數(shù) nitems nitems :讀的次數(shù):讀的次數(shù)? stream stream :文件指針:文件指針 功能:功能:從從streamstream所指定的文件中所指定的文件中以二進(jìn)制形式以二進(jìn)制形式讀取讀取數(shù)據(jù)塊。數(shù)據(jù)塊。 返值:讀出成功,返回返值:讀出成功,返回1 1;否則返回;否則返回0 0文件的讀寫(xiě)例例9-7 9-7 現(xiàn)有一個(gè)現(xiàn)有一個(gè)三人三人工作組信息,每個(gè)人包括編工作組信息,每個(gè)人包括編號(hào)、姓名及年齡,號(hào)、姓名及年齡,從鍵盤(pán)輸入這三個(gè)人的信息從鍵盤(pán)輸入這三個(gè)人的信息,并并存入文件存入文件file1file1中。中。 結(jié)構(gòu)體定義:結(jié)構(gòu)體定義:struct worker int num;
25、char *name;int age;main() /* 讀入數(shù)據(jù)讀入數(shù)據(jù) */ struct worker w3,x3; int i; char a20;/ 存放輸入的名字存放輸入的名字 FILE *fp; for(i=0;i3;i+) printf(enter number of worker:); scanf(%d,&wi.num); printf(enter name of worker:); while(!(strlen(gets(a);/ 必須要輸入必須要輸入 =(char *)malloc(strlen(a)+1); strcpy(,a);/
26、賦值賦值 printf(enter age of worker:); scanf(%d,&wi.age); /*寫(xiě)入文件寫(xiě)入文件*/fp=fopen(zxd.txt,wb+); for(i=0;i3;i+) fwrite(&wi,strlen()+5,1,fp); fclose(fp);文件的讀寫(xiě)/*從文件中讀出并輸出到屏幕從文件中讀出并輸出到屏幕*/fp=fopen(zxd.txt,rb+); for(i=0;i3;i+) fread(&xi,strlen()+5,1,fp); fclose(fp); printf(num name age
27、n); printf(-n); for(i=0;i3;i+) printf(%2d %-15s%4dn,xi.num,,xi.age); getch();文件的定位 o 函數(shù)函數(shù) rewind()rewind()格式格式: :void rewind(FILE void rewind(FILE * *stream)stream) 參數(shù)參數(shù): stream : stream 文件名文件名 功能:功能:使位置指針重新返回文件的開(kāi)頭使位置指針重新返回文件的開(kāi)頭 返值:返值:文件的定位例例9-8 9-8 文件文件stu.txtstu.txt中存放學(xué)生的學(xué)號(hào)和成績(jī)。數(shù)中存放學(xué)生的學(xué)號(hào)和成績(jī)。
28、數(shù)據(jù)從鍵盤(pán)輸入,而且用據(jù)從鍵盤(pán)輸入,而且用0 0結(jié)束輸入。建立文件后,結(jié)束輸入。建立文件后,將學(xué)生數(shù)據(jù)從頭輸出到屏幕上。將學(xué)生數(shù)據(jù)從頭輸出到屏幕上。#include #include main()main() FILE FILE * *fp;fp;int num;int num;float score;float score;fp=fopen(stu.txt,w+);fp=fopen(stu.txt,w+);scanf(%d%f,&num,&score);scanf(%d%f,&num,&score);while(num!=0)while(num!=0) fpr
29、intf(fp,%d,%fn,num,score);fprintf(fp,%d,%fn,num,score);scanf(%d%f,&num,&score);scanf(%d%f,&num,&score); rewind(fp);rewind(fp);while(!feof(fp)while(!feof(fp) fscanf(fp,%d,%f,&num,&score);fscanf(fp,%d,%f,&num,&score);printf(num=%d,score=%fn,num,score);printf(num=%d,scor
30、e=%fn,num,score); fclose(fp);fclose(fp); 文件的定位ofseek()fseek()函數(shù)函數(shù) 格式格式: :int fseek(FILE int fseek(FILE * *fp,long offset,int base)fp,long offset,int base)參數(shù)參數(shù): fp: fp:文件指針:文件指針 offsetoffset:相對(duì)位移量:相對(duì)位移量( (即相對(duì)于即相對(duì)于basebase的位移量的位移量) ) base base:是計(jì)算相對(duì)位移量的基點(diǎn),值可為:是計(jì)算相對(duì)位移量的基點(diǎn),值可為0 0、1 1和和2 2 basebase取值取值 命
31、名命名 含義含義0 SEEK-SET 0 SEEK-SET 文件開(kāi)頭文件開(kāi)頭1 SEEK-CUR 1 SEEK-CUR 文件當(dāng)前位置文件當(dāng)前位置2 SEEK-END 2 SEEK-END 文件末尾文件末尾 功能:功能:使使fpfp所指定的文件的讀得位置指針被設(shè)置為相對(duì)于所指定的文件的讀得位置指針被設(shè)置為相對(duì)于basebase的的 的位移量為的位移量為offsetoffset的位置的位置 返值:正常,當(dāng)前指針位置;異常,返值:正常,當(dāng)前指針位置;異常,-1-1 文件的定位例例9-9 9-9 在文件在文件stufile.txtstufile.txt中,存有中,存有100100個(gè)學(xué)生的信息,他們按學(xué)
32、號(hào)個(gè)學(xué)生的信息,他們按學(xué)號(hào)1 1、2 2、3 3、-、100100的順序排列?,F(xiàn)要求把單號(hào)學(xué)生的信息顯的順序排列?,F(xiàn)要求把單號(hào)學(xué)生的信息顯示在屏幕上。示在屏幕上。#include #include struct stu_type /struct stu_type /* *定義結(jié)構(gòu)體定義結(jié)構(gòu)體* */ / int num; /int num; /* *定義結(jié)構(gòu)體成員定義結(jié)構(gòu)體成員* */ /char name20;char name20;int age;int age;char clas;char clas;stud; stud; 文件的定位main() int n;FILE *fp; /*定義
33、文件類(lèi)型指針定義文件類(lèi)型指針*/if(fp=fopen(stufile.txt,rb)=NULL) /*打開(kāi)文件打開(kāi)文件*/puts(The file can not openedn);exit(1);for (n=1;n100;n+=2)fseek(fp,n*sizeof(struct stu_type),0); fread(&stud,sizeof(struct stu_type),1,fp) ; /結(jié)合起來(lái)用結(jié)合起來(lái)用 printf(%d%s%d%sn,stud.num,,stud.age,stud.clas);fclose(fp) ; /*關(guān)閉文件關(guān)閉文件*/ 文件的定位o ftell()ftell()函數(shù)函數(shù)格式:格式:long ftell(FILE long ftell(FILE * *stream)stream)參數(shù):參數(shù):fpfp為文件指針。為文件指針。功能:獲得當(dāng)前文件指針的位置功能:獲得當(dāng)前文件指針的位置返回:相對(duì)于文件開(kāi)頭的位移量返回:相對(duì)于文件開(kāi)頭的位移量( (以字節(jié)為以字節(jié)為單位單位) )。出錯(cuò)。出錯(cuò)( (如文件不存在如文件不存在) ),值為,值為-1-1。 文件的定位例例9-10 9-10 在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版拆遷安置房產(chǎn)權(quán)分割及交易協(xié)議4篇
- 專(zhuān)業(yè)平面視覺(jué)創(chuàng)作協(xié)議版
- 2025年度文化展覽場(chǎng)地租賃保證金三方執(zhí)行協(xié)議4篇
- 專(zhuān)業(yè)樹(shù)木銷(xiāo)售協(xié)議2024年版細(xì)化范本版A版
- 2025年度高端醫(yī)療設(shè)備采購(gòu)合同模板4篇
- 2025年度拆遷項(xiàng)目資金監(jiān)管與居間服務(wù)協(xié)議4篇
- 二零二五年度農(nóng)家樂(lè)合伙人合作協(xié)議3篇
- 2025年廠區(qū)公共區(qū)域清潔與物業(yè)管理合作協(xié)議范本4篇
- 2025年度商業(yè)綜合體室內(nèi)外裝修一體化合同4篇
- 專(zhuān)業(yè)羽毛球場(chǎng)租借合同(2024年)版B版
- 2023社會(huì)責(zé)任報(bào)告培訓(xùn)講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對(duì)聯(lián)大全新春對(duì)聯(lián)集錦
- 表B. 0 .11工程款支付報(bào)審表
- 警務(wù)航空無(wú)人機(jī)考試題庫(kù)及答案
- 空氣自動(dòng)站儀器運(yùn)營(yíng)維護(hù)項(xiàng)目操作說(shuō)明以及簡(jiǎn)單故障處理
- 新生兒窒息復(fù)蘇正壓通氣課件
- 法律顧問(wèn)投標(biāo)書(shū)
- 班主任培訓(xùn)簡(jiǎn)報(bào)4篇(一)
- 成都市數(shù)學(xué)八年級(jí)上冊(cè)期末試卷含答案
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專(zhuān)家共識(shí)
評(píng)論
0/150
提交評(píng)論