C語言程序設(shè)計(jì)教程(第二版)c第9章_第1頁(yè)
C語言程序設(shè)計(jì)教程(第二版)c第9章_第2頁(yè)
C語言程序設(shè)計(jì)教程(第二版)c第9章_第3頁(yè)
C語言程序設(shè)計(jì)教程(第二版)c第9章_第4頁(yè)
C語言程序設(shè)計(jì)教程(第二版)c第9章_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《C語言程序設(shè)計(jì)教程》

(第二版)Lizq98@李志球、劉昊編著1第9章

文件本章要點(diǎn):

理解文件的概念◆

理解文件指針的概念◆

掌握文件的打開、關(guān)閉、讀、寫操作◆

了解文件指針變量的定位◆

了解文件操作錯(cuò)誤的檢測(cè)2第9章

文件目錄

9.1文件的概念9.2文件的打開和關(guān)閉9.3文件的讀寫9.4文件定位函數(shù)

9.5文件操作出錯(cuò)檢測(cè)函數(shù)39.1文件的概念文件是指存儲(chǔ)在存儲(chǔ)設(shè)備上一組信息的集合。例如,程序文件存放程序代碼,數(shù)據(jù)文件存放數(shù)據(jù)。這些文件稱為“磁盤文件”,它們存放在外存儲(chǔ)設(shè)備磁盤上。C語言中,文件的概念具有更廣泛的意義,它把所有的外部設(shè)備都作為文件對(duì)待,這種文件稱為“設(shè)備文件”,從而把實(shí)際的物理設(shè)備抽象化,形成了邏輯文件的概念。例如,終端鍵盤是輸入文件,顯示器和打印機(jī)是輸出文件。這樣可以對(duì)磁盤文件和設(shè)備文件的輸入輸出采用相同的處理方法。這種邏輯上的統(tǒng)一為程序設(shè)計(jì)提供了便利,使C標(biāo)準(zhǔn)函數(shù)庫(kù)中的輸入輸出函數(shù)既可以用來讀寫磁盤文件,也可以從外部設(shè)備輸入輸出。49.1文件的概念1.文件(ASCII)和二進(jìn)制文件

根據(jù)文件中數(shù)據(jù)的組織形式,C語言有兩種類型的流式文件:文本文件(又稱ASCII文件)和二進(jìn)制文件。文本文件中每一個(gè)字節(jié)存放一個(gè)ASCII碼,代表一個(gè)字符。二進(jìn)制文件中的數(shù)據(jù)是按其在內(nèi)存中的存儲(chǔ)形式存放的,即按數(shù)據(jù)的二進(jìn)制形式存放。C語言把文件看成是一個(gè)字節(jié)序列,文件是由一個(gè)個(gè)的字節(jié)組成。對(duì)文件的存取也以字節(jié)為單位,輸入輸出數(shù)據(jù)流只受程序控制而不受文件中物理符號(hào)(如回車換行符)控制。這種文件稱為“流式文件”。59.1文件的概念緩沖文件系統(tǒng)是指:系統(tǒng)自動(dòng)在內(nèi)存中為每個(gè)正在使用的文件開辟一個(gè)緩沖區(qū),向文件輸出數(shù)據(jù)必須先送到內(nèi)存中的緩沖區(qū),裝滿緩沖區(qū)后才一起寫入文件中;若從文件讀入數(shù)據(jù),則一次從文件中將一批數(shù)據(jù)讀入緩沖區(qū)(充滿緩沖區(qū)),然后再?gòu)木彌_區(qū)逐個(gè)將數(shù)據(jù)送到程序數(shù)據(jù)區(qū)。2.緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)

非緩沖區(qū)文件系統(tǒng)是指:系統(tǒng)不自動(dòng)為文件開辟內(nèi)存緩沖區(qū),而由程序自己為所需的文件開辟緩沖區(qū)。C語言對(duì)文件的處理是通過調(diào)用輸入輸出函數(shù)實(shí)現(xiàn)的。輸入輸出函數(shù)有兩種:一種稱為緩沖文件系統(tǒng),另一種稱為非緩沖文件系統(tǒng)。69.1文件的概念3.文件指針

系統(tǒng)為每個(gè)正在使用的文件都在內(nèi)存中開辟一個(gè)區(qū)域,用來存放有關(guān)文件信息(如文件名、文件操作模式、文件讀寫的當(dāng)前位置、文件緩沖區(qū)位置等)。這些信息保存在一個(gè)結(jié)構(gòu)體類型的變量中,該結(jié)構(gòu)體類型TurboC的頭文件stdio.h中定義的,取名為FILE。文件型指針是指向數(shù)據(jù)類型為FILE的文件控制結(jié)構(gòu)的指針,簡(jiǎn)稱文件指針。在緩沖文件系統(tǒng)中,對(duì)已打開的文件進(jìn)行I/O操作都是通過文件指針進(jìn)行的。為此,用戶需要在程序中說明文件指針。文件指針說明的一般格式如下:FILE*文件型指針變量名;例如:FILE*fp;fp是一個(gè)指向FILE類型的文件指針變量。79.2文件的打開和關(guān)閉在對(duì)磁盤文件進(jìn)行輸入輸出之前必須先打開文件,使用完后要關(guān)閉文件。所謂打開文件就是在內(nèi)存中建立文件的各種有關(guān)信息,并使文件指針指向該內(nèi)存區(qū)域,以便進(jìn)行各種操作。關(guān)閉文件則是釋放打開文件時(shí)分配的內(nèi)存區(qū)域,斷開文件指針與文件之間的聯(lián)系。標(biāo)準(zhǔn)輸入輸出設(shè)備的打開和關(guān)閉是有系統(tǒng)控制的,用戶不能控制它們,如表9.1所示。這些文件指針不需要用戶說明,可以在程序中直接使用它們。89.2文件的打開和關(guān)閉缺省設(shè)備文件名文件指針鍵盤KYBD(標(biāo)準(zhǔn)輸入文件)stdin顯示器SCRN(標(biāo)準(zhǔn)輸出文件)stdout(標(biāo)準(zhǔn)錯(cuò)誤輸出文件)stderr打印機(jī)PRN(標(biāo)準(zhǔn)輸出文件)stdprn表9.1常用設(shè)備文件99.2文件的打開和關(guān)閉9.2.1打開文件函數(shù)(fopen)1)fopen函數(shù)調(diào)用的格式文件指針變量名=fopen("文件名","文件讀寫方式")3)返回值文件結(jié)構(gòu)體數(shù)據(jù)在內(nèi)存中的首地址,即文件指針;出錯(cuò)時(shí)返回一個(gè)NULL。2)功能打開由文件名所指定的文件,建立此文件的文件指針。109.2文件的打開和關(guān)閉9.2.1打開文件函數(shù)(fopen)4)說明

1)文件名是要打開文件的文件名,此文件名應(yīng)為文件的全稱,包括文件所在的文件夾、文件名、擴(kuò)展名,其形式可以是用雙引號(hào)括起來的字符常量,如“C:\\TC\\TEST.C”,也可以是字符串指針變量(或字符數(shù)組名)。(2)文件讀寫方式為文件打開的方式,在ANSIC標(biāo)準(zhǔn)中,文件打開方式的有效值如表9.2所示。119.2文件的打開和關(guān)閉文件使用方式mode

含義"r"(只讀)以只讀方式打開一個(gè)文本文件;若文件不存在,函數(shù)返回NULL。"w"(只寫)以只寫方式建立一個(gè)文本文件;若文件存在,則刪除原文件數(shù)據(jù)。"a"(追加)向文本文件尾增加數(shù)據(jù);若文件不存在,則創(chuàng)建該文件。"rb"(只讀)以只讀方式打開一個(gè)二進(jìn)制文件。"wb"(只寫)以只寫方式建立一個(gè)二進(jìn)制文件。"ab"(追加)向二進(jìn)制文件尾增加數(shù)據(jù)"r+"(讀寫)若文件不存在,則創(chuàng)建;若文件存在,則覆蓋原文件。"w+"(讀寫)若文件不存在,則創(chuàng)建;若文件存在,則覆蓋原文件。"a+"(讀寫)若文件不存在,則創(chuàng)建;若文件存在,則在文件尾添加數(shù)據(jù)。"rb+"(讀寫)為讀/寫打開一個(gè)二進(jìn)制文件"wb+"(讀寫)為讀/寫建立一個(gè)新的二進(jìn)制文件"ab+"(讀寫)為讀/寫打開一個(gè)二進(jìn)制文件129.2文件的打開和關(guān)閉4)說明(3)fopen()函數(shù)按照指定的方式打開文件。若文件正常打開,則建立該文件的文件控制結(jié)構(gòu),然后返回它的地址;當(dāng)文件不能打開時(shí),則返回NULL(零)。在程序中必須用文件指針變量接收fopen()函數(shù)的返回值。例如,程序中要打開名為test.txt的文件,并且要讀取文件內(nèi)容時(shí),程序?yàn)椋篎ILE*fp;fp=fopen("test.txt","r");/*表示用只讀方式打開test.txt文件*/139.2文件的打開和關(guān)閉4)說明(4)在程序中,用fopen()函數(shù)打開某文件時(shí),一般要對(duì)函數(shù)返回值進(jìn)行檢查,判斷文件是否正常打開,常見的程序段形式是:if((fp=fopen("filename",mode))==NULL){printf("filecannotopen.\n");exit(0);/*關(guān)閉所有文件,并返回操作系統(tǒng)狀態(tài)*/}149.2文件的打開和關(guān)閉4)說明(5)當(dāng)用fopen()以寫方式打開一文件時(shí),如果磁盤中已存在該文件,則該文件被刪除,并重新建立一個(gè)新文件;若沒有相同名字的文件存在,則直接建立一個(gè)新文件。(6)若想在文件中追加數(shù)據(jù),則必須以“a”或“ab”方式打開文件。以追加方式和以“讀”方式打開文件時(shí),若文件不存在,則返回一個(gè)錯(cuò)誤信息。(7)當(dāng)以讀/寫方式打開某文件時(shí),即使該文件已存在也不刪除它;但如果它以前不存在,則建立一個(gè)新文件。159.2文件的打開和關(guān)閉9.2.2關(guān)閉文件函數(shù)(fclose)文件一旦使用完畢,應(yīng)及時(shí)將該文件關(guān)閉,以避免文件的數(shù)據(jù)丟失、誤用等錯(cuò)誤。關(guān)閉文件通過fclose函數(shù)完成。1)fclose函數(shù)的調(diào)用格式fclose(文件指針變量);2)功能關(guān)閉文件指針變量所指向的文件。3)返回值文件正常關(guān)閉后返回0;出錯(cuò)時(shí)返回一個(gè)非零值。程序結(jié)束之前必須使用fclose()函數(shù)關(guān)閉所有打開的文件。關(guān)閉文件時(shí),先把緩沖區(qū)中的數(shù)據(jù)輸出到磁盤文件,然后釋放文件指針變量,使文件指針變量不再指向該文件。169.3文件的讀寫測(cè)試文件是否結(jié)束的函數(shù)feof()在處理文本文件時(shí),系統(tǒng)提供了一個(gè)文件結(jié)束標(biāo)志EOF,EOF在stdio.h中定義為-1。當(dāng)讀入的字符值為-1(即EOF)時(shí),表示文件結(jié)束。但對(duì)于二進(jìn)制文件,讀入字節(jié)的二進(jìn)制值可能是-1,所以不能用EOF來判斷二進(jìn)制文件是否結(jié)束。ANSIC提供了一個(gè)feof()函數(shù)來判斷文件是否結(jié)束。1)feof()的定義格式int

feof(FILE*fp)2)功能判斷fp指向的文件是否結(jié)束。3)返回值當(dāng)未遇文件結(jié)束時(shí),返回值為0;當(dāng)文件結(jié)束時(shí),返回值為1。179.3文件的讀寫9.3.1字符讀寫函數(shù)1.字符輸入函數(shù)fgetc()

1)fgetc函數(shù)的定義格式int

fgetc(FILE*fp)2)功能從文件指針fp所指向的文件中讀取一個(gè)字符,該文件必須是以讀或讀寫方式打開的。3)返回值正常情況下返回讀到的字符;讀到文件結(jié)束或出錯(cuò)時(shí)返回文件結(jié)束標(biāo)志EOF,EOF在stdio.h中定義為-1189.3文件的讀寫9.3.1字符讀寫函數(shù)2.字符輸出函數(shù)fputc()

1)fputc()函數(shù)的定義格式int

fputc(charch,F(xiàn)ILE*fp);2)功能將ch的值輸出到fp所指向的文件中,該文件必須是以寫或讀寫方式打開的。3)返回值若輸出成功,則返回字符ch;若輸出失敗,則返回EOF。4)說明其中ch為要輸出的字符,它可以是一個(gè)字符常量,也可以是一個(gè)字符變量。199.3文件的讀寫9.3.1字符讀寫函數(shù)【例9.2】

從鍵盤輸入一系列字符,,并逐個(gè)寫到磁盤文件outfile.txt中,直到輸入一個(gè)問號(hào)為止。main(){FILE*fp;charch;if((fp=fopen("outfile.txt","w"))==NULL){printf("Can’topenfile\n");exit(0);}while((ch=getchar())!='?')

fputc(ch,fp);

fclose(fp);}209.3文件的讀寫3.getc()及putc()函數(shù)

9.3.1字符讀寫函數(shù)在stdio.h中,把fputc()和fgetc()定義為宏名putc和getc,因此,putc()與fputc()、getc()與fgetc()是等價(jià)的,一般把它們作為相同的函數(shù)對(duì)待。219.3文件的讀寫9.3.1字符讀寫函數(shù)【例9.3】文本文件的復(fù)制。#include"stdio.h"main(){FILE*infp,*outfp;charch,infile[10],outfile[10];

puts("Pleaseinputtheinfilename:\n");

scanf("%s",infile);

puts("Pleaseinputtheoutfilename:\n");

scanf("%s",outfile);if((infp=fopen(infile,"r"))==NULL){printf("File%scant’topen.\n",infile);exit(0);}

if((outfp=fopen(outfile,"w"))==NULL){printf("File%scant’topen.\n",outfile);exit(0);}

while(!feof(infp))

putc(getc(infp),outfp);

fclose(infp);

fclose(outfp);}229.3文件的讀寫9.3.2字符串讀寫函數(shù)1.字符串輸入函數(shù)fgets()

1)fgets()函數(shù)的定義格式char*fgets(char*buf,int

n,FILE*fp)2)功能從fp指向的文件讀取一個(gè)長(zhǎng)度為(n-1)的字符串,存入起始地址為buf的內(nèi)存緩沖區(qū),并在讀入數(shù)據(jù)尾部寫入字符串結(jié)束標(biāo)志‘\0’。3)返回值返回地址buf;若遇文件結(jié)束或出錯(cuò)時(shí),則返回NULL。239.3文件的讀寫9.3.2字符串讀寫函數(shù)1.字符串輸入函數(shù)fgets()

4)說明該函數(shù)從文件中讀取字符時(shí),達(dá)到下列條件之一時(shí),讀取結(jié)束。(1)已經(jīng)讀取了(n-1)個(gè)字符;(2)讀取到回車符;(3)檢測(cè)到文件尾。例如:若charstr[10];

fgets(str,n,fp);該語句從fp指向的文件讀?。╪-1)個(gè)字符,并把它們放到字符數(shù)組str中。249.3文件的讀寫9.3.2字符串讀寫函數(shù)2.字符串輸出函數(shù)fputs()

1)fputs()函數(shù)的定義格式int

fputs(char*str,FILE*fp)2)功能將str指向的字符串輸出到fp所指向的文件。3)返回值輸出成功則返回0;否則返回非0整數(shù)。例如:fputs(“Good!”,fp);該語句將字符串“Good!”輸出到fp指向的文件。259.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)1.讀數(shù)據(jù)塊函數(shù)fread()

1)fread()函數(shù)的定義格式

int

fread(char*buffer,unsignedsize,unsignedcount,FILE*fp)2)功能從文件指針fp指向的文件中讀入count個(gè)大小為size個(gè)字節(jié)的數(shù)據(jù)項(xiàng),并把它們存入由buffer指所的內(nèi)存緩沖區(qū)中269.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)1.讀數(shù)據(jù)塊函數(shù)fread()

3)返回值返回實(shí)際所讀的數(shù)據(jù)項(xiàng)個(gè)數(shù),若遇文件結(jié)束或出錯(cuò)則返回0。4)說明buffer是一指針,它指向一個(gè)接收數(shù)據(jù)的存儲(chǔ)區(qū)的首地址,size為讀入的每個(gè)數(shù)據(jù)項(xiàng)的字節(jié)數(shù),count指出要讀入多少個(gè)數(shù)據(jù)項(xiàng),fp指向一個(gè)已打開的文件。279.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)2.寫數(shù)據(jù)塊函數(shù)fwrite()

1)fwrite()函數(shù)的定義格式2)功能從buffer指向的內(nèi)存緩沖區(qū)中寫count個(gè)長(zhǎng)度為size的數(shù)據(jù)到由fp指向的文件中。3)返回值實(shí)際寫到fp文件中的數(shù)據(jù)項(xiàng)個(gè)數(shù)。若返回值比count小,則說明出錯(cuò)。int

fwrite(char*buffer,unsignedsize,unsignedcount,FILE*fp);289.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)2.寫數(shù)據(jù)塊函數(shù)fwrite()

4)說明buffer指向一內(nèi)存緩沖區(qū),size為寫入的數(shù)據(jù)項(xiàng)的字節(jié)數(shù),count指出要寫入多少個(gè)數(shù)據(jù)項(xiàng),fp指向一個(gè)已打開的文件。例如文件以二進(jìn)制形式打開,將一個(gè)浮點(diǎn)型變量x的值寫到磁盤文件中,可用下面語句實(shí)現(xiàn):fwrite(&x,sizeof(float),1,fp);

sizeof是一個(gè)長(zhǎng)度運(yùn)算符。它的一般格式是:

sizeof(類型標(biāo)識(shí)符或變量名)其運(yùn)算結(jié)果為此類型的一個(gè)數(shù)據(jù)或此變量在內(nèi)存中占用的字節(jié)數(shù)。299.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)【例9.4】

從鍵盤輸入10個(gè)學(xué)生的信息,寫入一個(gè)文件student.dat中,再?gòu)奈募x出這10個(gè)學(xué)生的數(shù)據(jù)顯示在屏幕上。main(){FILE*fp;

inti;

structstudentstu;

if((fp=fopen("d:\\test\\student.dat","wb"))==NULL){printf("Can’topenfile.\n");

getch();exit(0);}structstudent{charxm[10];

intage;charaddr[20];}309.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)

for(i=0;i<10;i++){

printf("請(qǐng)輸入第%d個(gè)學(xué)生的信息:",i);

scanf("%s%d%s",stu.xm,&stu.age,stu.addr);fwrite(&stu,sizeof(stu),1,fp);}

fclose(fp);輸入數(shù)據(jù)寫入文件【例9.4】

從鍵盤輸入10個(gè)學(xué)生的信息,寫入一個(gè)文件student.dat中,再?gòu)奈募x出這10個(gè)學(xué)生的數(shù)據(jù)顯示在屏幕上。319.3文件的讀寫9.3.3數(shù)據(jù)塊讀寫函數(shù)

fp=fopen("student.dat","rb");while(fread(&stu,sizeof(stu),1,fp)){

printf("%s\t%d\t%s\n",stu.xm,stu.age,stu.addr);}

fclose(fp);}從文件讀取數(shù)據(jù)顯示出來【例9.4】

從鍵盤輸入10個(gè)學(xué)生的信息,寫入一個(gè)文件student.dat中,再?gòu)奈募x出這10個(gè)學(xué)生的數(shù)據(jù)顯示在屏幕上。329.3文件的讀寫9.3.4格式化讀寫函數(shù)1.格式輸入函數(shù)fscanf()

1)fscanf()函數(shù)的定義格式int

fscanf(fp,"輸入格式",輸入項(xiàng)表)2)功能從文件指針fp指定的文件中,按格式將輸入數(shù)據(jù)送到輸入項(xiàng)表所指向的內(nèi)存單元中。3)返回值已輸入數(shù)據(jù)的個(gè)數(shù)。例如:

fscanf(fp,"%d",&b);該語句從fp指向的文件中讀取一十進(jìn)制整數(shù)賦值給變量b。339.3文件的讀寫9.3.4格式化讀寫函數(shù)2.格式輸出函數(shù)fprintf()

1)fprintf()函數(shù)的定義格式int

fprintf(fp,"輸出格式",輸出項(xiàng)表)2)功能把輸出項(xiàng)表的值按指定格式輸出到fp所指定的文件中。3)返回值實(shí)際輸出的字符數(shù)。例如:

fprintf(fp,"%d,%6.2f",10,23.5);該語句將表達(dá)式的值10和23.5按%d和%6.2f的格式輸出到fp指向的文件中。349.3文件的讀寫9.3.4格式化讀寫函數(shù)【例9.5】

從鍵盤輸入10個(gè)學(xué)生的信息,按一定格式寫入一個(gè)文件student.dat中。main(){FILE*fp;

inti;

structstudentstu;

if((fp=fopen("d:\\test\\student.dat","w"))==NULL){printf("Can’topenfile.\n");

getch();exit(0);}structstudent{charxm[10];

intage;charaddr[20];}359.3文件的讀寫9.3.4格式化讀寫函數(shù)【例9.5】

從鍵盤輸入10個(gè)學(xué)生的信息,按一定格式寫入一個(gè)文件student.dat中。for(i=0;i<10;i++){

printf("請(qǐng)輸入第%d個(gè)學(xué)生的信息:",i);

scanf("%s%d%s",stu.xm,&stu.age,stu.addr);fprintf(fp,"%10s%3d%s",stu.xm,stu.age,stu.addr);}

fclose(fp);}369.4文件定位函數(shù)在文件讀寫過程中,系統(tǒng)為每個(gè)打開的文件設(shè)置了一個(gè)文件位置指針,指向當(dāng)前讀寫數(shù)據(jù)的位置。文件按打開時(shí),文件位置指針位于文件頭部,隨著數(shù)據(jù)的讀寫,文件位置指針會(huì)向后移動(dòng)。文件位置指針是一個(gè)無符號(hào)長(zhǎng)整型數(shù)據(jù),它的最小值為0,最大值為文件的長(zhǎng)度。在C語言中允許使用有關(guān)函數(shù)改變位置指針?biāo)付ǖ奈恢谩?.重定位函數(shù)rewind()

1)rewind()函數(shù)的定義格式voidrewind(FILE*fp)2)功能使fp指向文件中的位置指針指向文件開頭,并清除文件結(jié)束標(biāo)志和錯(cuò)誤標(biāo)志。379.4文件定位函數(shù)2.文件定位函數(shù)fseek()

對(duì)流式文件可以進(jìn)行順序讀寫或隨機(jī)讀寫。如果能將位置指針按需要移動(dòng)到任意位置的,就是隨機(jī)讀寫。要隨即存取文件,可使用能指定文件內(nèi)存任意位置的函數(shù)fseek()。1)fseek()函數(shù)的定義格式int

fseek(FILE*fp,long

offset,intbase)2)功能將fp指向的文件的位置指針移到以base為起始位置,以offset為位移量的位置。389.4文件定位函數(shù)2.文件定位函數(shù)fseek()

3)返回值成功返回0;否則返回非0值。4)說明其中,offset為位移量,表示文件的指針移動(dòng)的字節(jié)數(shù),為負(fù)數(shù)表示向文件頭移動(dòng),整數(shù)表示向文件尾移動(dòng)。Base用來制定起始點(diǎn),可用值是0、1、2,見下表。起始點(diǎn)Base值對(duì)應(yīng)符號(hào)常量文件開頭0SEEK_SET文件當(dāng)前位置1SEEK_CUR文件最末2SEEK_END表9.3移動(dòng)起點(diǎn)值399.4文件定位函數(shù)【例9.6】

在磁盤文件student.dat中有10個(gè)學(xué)生的數(shù)據(jù),要求將第1、3、5、7、9個(gè)學(xué)生的數(shù)據(jù)讀出,在屏幕上顯示出來。struct

student_type{charname[10];

int

num,age;charsex;}stu[10];main(){inti;FILE*fp;if((fp=fopen("student.dat","rb"))==NULL){printf("can’topenfile.\n");exit(0);}409.4文件定位函數(shù)【例9.6】

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論