計(jì)算機(jī)課件 文件類型_第1頁(yè)
計(jì)算機(jī)課件 文件類型_第2頁(yè)
計(jì)算機(jī)課件 文件類型_第3頁(yè)
計(jì)算機(jī)課件 文件類型_第4頁(yè)
計(jì)算機(jī)課件 文件類型_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第72章文件類型

第12章文件類型

12」文件類型與文件指針

12.2文件的打開與關(guān)閉

12.3文件的讀寫與建立

12.4文件輔助操作

12.5程序設(shè)計(jì)舉例

第72章文件類型

12.1文件類型與文件指針

1.文本文件和二進(jìn)制文件

c語(yǔ)言文件把數(shù)據(jù)看作是一連串的字符(字節(jié))。

c語(yǔ)言文件是一個(gè)字符(字節(jié))的序列,是一字符流或

字節(jié)流,是一種流式文件。根據(jù)數(shù)據(jù)的組織形式,可

分為文本文件和二進(jìn)制文件。

第72章文件類型

文本文件又稱為ASCII文件,每一個(gè)字節(jié)中存放一

個(gè)ASCII代碼,代表一個(gè)字符。例如,一個(gè)整數(shù)123,

若用ASCII文件存放,占3個(gè)字節(jié)的存儲(chǔ)單元,1、2、

3各用一個(gè)字節(jié)存儲(chǔ)。而1、2、3的ASCII碼分別為49、

50、51,故123用ASCII文件存放時(shí),存放形式為

OOllOOOlOOllOOlOOOllOOllo

二進(jìn)制文件是直接用數(shù)據(jù)的二進(jìn)制形式存放。例

如,對(duì)整數(shù)整3,二進(jìn)制為0000000001111011,用二進(jìn)

制文件存放,需2個(gè)字節(jié),存放形式為

0000000001111011o

第72章文件類型

2.緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)

在緩沖文件系統(tǒng)中,系統(tǒng)自動(dòng)在內(nèi)存中為每個(gè)正在

使用的文件開辟一個(gè)緩沖區(qū),文件的存取都是通過(guò)緩沖

區(qū)進(jìn)行的。緩沖區(qū)相當(dāng)于一個(gè)中轉(zhuǎn)站,它的大小由具體

的C版本規(guī)定,一般為512字節(jié)。緩沖文件系統(tǒng)原來(lái)用于

處理文本文件。

在非緩沖文件系統(tǒng)中,系統(tǒng)不為所打開的文件自動(dòng)

開辟緩沖區(qū),緩沖區(qū)的開辟由程序完成。非緩沖文件系

統(tǒng)原來(lái)用于處理二進(jìn)制文件。

第72章文件類型

ANSIC不再采用非緩沖文件系統(tǒng),而只采用緩沖

文件系統(tǒng),在處理二進(jìn)制文件時(shí),也通過(guò)緩沖文件系

統(tǒng)進(jìn)行。ANSIC通過(guò)擴(kuò)充緩沖文件系統(tǒng),使緩沖文件

系統(tǒng)既能處理文本文件,又能處理二進(jìn)制文件。

第上章文件類型

3.內(nèi)部文件和外部文件

存放在外部介質(zhì)上的文件稱為外部文件,通過(guò)文件

名標(biāo)識(shí)。C程序中的文件稱為內(nèi)部文件,用文件指針來(lái)

描述。

程序中要實(shí)現(xiàn)對(duì)文件的處理,先必須在內(nèi)部文件與

外部文件之間建立聯(lián)系,打開文件;然后方可對(duì)文件進(jìn)

行操作。文件最基本的操作是讀寫操作;操作完成應(yīng)當(dāng)

切斷內(nèi)部文件與外部文件之間的聯(lián)系,關(guān)閉文件。

對(duì)文件進(jìn)行的所有操作通過(guò)C編譯系統(tǒng)提供的標(biāo)準(zhǔn)

函數(shù)完成,這些函數(shù)的信息包含在頭文件“stdio.h”中。

第72章文件類型

12.1.2文件類型

文件類型是一特殊的結(jié)構(gòu)體類型,一般命名為

FILEo用戶可以直接使用FILE來(lái)定義文件類型變量,

存放要處理的文件的基本信息。

各種C編譯系統(tǒng)的FILE定義可以不同,但均包含

進(jìn)行文件操作所需的各種信息。

第72章文件類型

下面是TURBOC中對(duì)FILE的定義:

typedefstruct

{shortlevel;

unsignedflags;

charfd;

unsignedcharhold;

shortbsize;

unsignedchar"buffer;

unsignedchar*curp;

unsignedistemp;

shorttoken;

}FILE;

第72章文件類型

12.1.3文件指針變量

對(duì)文件的描述,往往通過(guò)指向文件的文件指針變量

來(lái)進(jìn)行。文件指針變量定義的形式為:

FILE*文件指針變量;

例如:FILE*fp,*fpa[10];

定義了文件指針變量班和文件指針變量數(shù)組中a。文

件指針變量幣及文件指針變量數(shù)組Sa的每個(gè)分量可以指

向一個(gè)文件的信息。

第72章文件類型

12.2文件的打開與關(guān)閉

12.2.1文件的打開

文件的打開用fopen()函數(shù)完成,調(diào)用方式通常

為:

fp=fopen(文件名,文件使用方式);

第72章文件類型

文件使用方式共有12種,用特定字符形成的字符串

來(lái)描述。

(1)"r"方式,以只讀方式打開文本文件。

這時(shí)從文件中讀數(shù)據(jù)到內(nèi)存,故要求文件已經(jīng)存在。

用〃r〃方式打開的文件只能讀,不能同時(shí)寫。

(2)〃w〃方式,以只寫方式打開文本文件。

這時(shí)將內(nèi)存中的數(shù)據(jù)寫入到磁盤文件中。若文件不

存在,建立新文件;若文件存在,則刷新文件,重新建

立。用〃w〃方式打開的文件只能寫,不能同時(shí)讀。

第72章文件類型

(3)〃a〃方式,為文本文件的追加方式。

用于向已存在的文件尾部追加新的數(shù)據(jù),而文件中原來(lái)

的數(shù)據(jù)不被破壞。

(4)〃r+"、〃w+〃、〃a+”方式,打開的文本文件既能讀又能

同時(shí)寫。

〃r+〃方式:在讀的同時(shí)可以進(jìn)行寫。讀寫位置指針在頭

部,若原來(lái)存在此文件,則以覆蓋方式寫。

"w+〃方式:在寫的同時(shí)可以進(jìn)行讀。由于打開文件時(shí),

文件原來(lái)的內(nèi)容被刷新,一般不要在打開文件后立即讀文

件。

〃a+J在追加的同時(shí)可以進(jìn)行讀。讀文件時(shí),從文件首

部開始;寫文件時(shí),在文件尾部追加。

第72章文件類型

(5)〃rb〃、〃wb”、〃ab〃、〃rb+〃、〃wb+〃、〃ab+〃是使用

二進(jìn)制文件相應(yīng)的六種方式。

打開文件可得到三個(gè)信息:

①要訪問(wèn)的文件名。

②使用文件的方式。

③哪一個(gè)指針變量用于指向被打開的文件。

打開成功,返回文件指針(文件信息區(qū)的起始地

址);不能打開,返回空指針。

第72章文件類型

例如:

(1)fp=fopen("student.dat","w");

以只寫方式打開當(dāng)前盤當(dāng)前目錄下的文本文件中的學(xué)

生數(shù)據(jù)文件,用戶可將數(shù)據(jù)寫入此磁盤文件中。

(2)fp=fopen("c:\cj\cjc.dat",student.dat","r");

以只讀方式打開C盤成績(jī)子目錄下C語(yǔ)言成績(jī)文件,

用戶可將文件中數(shù)據(jù)讀出來(lái)。但此文件必須存在,否則會(huì)

出錯(cuò)。

第72章文件類型

(3)fp=fopen(〃PRG〃,〃ab+");

打開二進(jìn)制文件PRG,在讀的同時(shí)也可以寫。

為確保文件的讀寫操作,對(duì)文件是否已正常打開往

往加上if語(yǔ)句進(jìn)行控制。例如:

if(fp=fopen(("student.dat","w")==NULL)

{printf("不能打開文件!”);

exit(0);

第72章文件類型

說(shuō)明:

(1)不是所有編譯系統(tǒng)均提供以上12種文件使用方式。

(2)用"r〃、"rb〃方式打開的文件必須已經(jīng)存在。

(3)用"w"、"wb"方式打開的文件,可以存在也可以不

存在。不存在時(shí),則新建文件;存在時(shí),重新建立,原

文件內(nèi)容不被保留。

(4)在讀寫文本文件時(shí),對(duì)回車換行符要進(jìn)行轉(zhuǎn)換,

讀時(shí)回車換行符轉(zhuǎn)換成換行符,寫時(shí)回車換行符轉(zhuǎn)換成回

車、換行兩個(gè)字符。對(duì)二進(jìn)制文件,不進(jìn)行這種轉(zhuǎn)換。

第72章文件類型

(5)程序運(yùn)行時(shí),系統(tǒng)自動(dòng)打開標(biāo)準(zhǔn)輸入stdin、

標(biāo)準(zhǔn)輸出stdout、標(biāo)準(zhǔn)出錯(cuò)輸出stderr三個(gè)標(biāo)準(zhǔn)文件。

stdin>stdout>stderr由系統(tǒng)自動(dòng)定義,可直接使用。

(6)標(biāo)準(zhǔn)設(shè)備文件可與普通文件一樣操作,但將

產(chǎn)生特殊效果。如寫到打印機(jī),將在程序中實(shí)現(xiàn)打印

輸出控制。

第72章文件類型

12.2.2文件的關(guān)閉

文件在使用完后,應(yīng)及時(shí)關(guān)閉。文件的關(guān)閉用

fclose()函數(shù)完成,調(diào)用方式為:

fclose(文件指針變量);

關(guān)閉文件將使文件指針變量與文件名脫鉤,即指針

變量不再指向該文件。文件關(guān)閉后不能再用該指針變量

對(duì)文件進(jìn)行操作,該指針變量可再指向其它文件。

順利執(zhí)行了關(guān)閉操作,將返回函數(shù)值0。如返回一

個(gè)非0值,則表示文件關(guān)閉出錯(cuò)。

第72章文件類型

12.3文件的讀寫與建立

12.3.1字符級(jí)數(shù)據(jù)的讀和寫

1.字符級(jí)數(shù)據(jù)的讀

函數(shù)原型:

intfgetc(FILE*fp);

功能:從文件指針中所指向的文件中讀取一個(gè)字節(jié)的

代碼值(字符),作為函數(shù)的返回值。正常情況下為一

個(gè)字符,讀到文件尾或出錯(cuò)時(shí)為EOF(-1)o

第72章文件類型

說(shuō)明:

(1)讀完一字節(jié)數(shù)據(jù)后,文件指針自動(dòng)后移。

(2)getc和魚etc是等價(jià)的宏。

(3)若文件指針為stdin,貝悔etc(stdin)功能與

getchar()等價(jià)。

第72章文件類型

2.字符級(jí)數(shù)據(jù)的寫

函數(shù)原型:

intfputc(intch,FILE*fp);

功能:將ch寫入文件指針中所指向的文件中。寫入

成功返回字符值,不成功返回值EOF。

說(shuō)明:

(1)寫入數(shù)據(jù)前,文件指針自動(dòng)后移。

(2)puttc和finite是等價(jià)的宏。

(3)若文件指針為stdout,貝II幣utc(stdout)功能與

puttchar()等價(jià)。

(4)文件的建立通過(guò)寫操作完成。

第72章文件類型

12.3.2字級(jí)數(shù)據(jù)的讀和寫

1.字級(jí)數(shù)據(jù)的讀

函數(shù)原型:

intgetw(FILE*fp);

功能:

從文件指針中所指文件中讀一個(gè)字的數(shù)據(jù)(整

數(shù)),并以它作為函數(shù)的返回值。

說(shuō)明:

非標(biāo)準(zhǔn)C所提供函數(shù)。

第72章文件類型

2.字節(jié)數(shù)據(jù)的寫

函數(shù)原型:

intputw(intw,FILE*fp);

功能:

寫一個(gè)字的數(shù)據(jù)(整數(shù))到文件指針中所指的

文件中,并以它作為函數(shù)的返回值。

說(shuō)明:非標(biāo)準(zhǔn)C所提供函數(shù)。

第72章文件類型

12.3.3字符串級(jí)數(shù)據(jù)的讀和寫

1.字符串?dāng)?shù)據(jù)的讀

函數(shù)原型:

char*fgets(char*str,intlen,FILE*fp);

功能:

從文件指針S所指的文件中讀入一個(gè)長(zhǎng)度為len-1的

字符串,送入到str所指內(nèi)存地址中。返回值為str的首地

址,若讀到文件尾或出錯(cuò),則返回值為NULL。

第72章文件類型

說(shuō)明:

(1)字符串讀入后在最后加結(jié)尾符,\0,。

(2)將讀到的回車符作為字符存儲(chǔ)。這點(diǎn)與gets()

函數(shù)不同,gets()把讀到的回車符轉(zhuǎn)換成結(jié)尾符。

(3)字符串?dāng)?shù)據(jù)的讀和寫亦稱“行處理”。

第72章文件類型

2.字符串?dāng)?shù)據(jù)的寫

函數(shù)原型:

intfputs(char*str,FILE*fp);

功能:

將str指針?biāo)缸址畬懭氲轿募羔樦兴肝?/p>

件中。若該函數(shù)成功調(diào)用,返回函數(shù)值0,否則返

回函數(shù)值非0。

第72章文件類型

12.3.4數(shù)據(jù)塊數(shù)據(jù)的讀和寫

1.數(shù)據(jù)塊數(shù)據(jù)的讀

函數(shù)原型:

unsignedfread(void*buffer,unsignedsize,unsigned

count,FILE*fp);

功能:從文件指針fjp所指的文件中讀取count個(gè)大小為size

字節(jié)的數(shù)據(jù)塊到buffer指針?biāo)傅膬?nèi)存中。讀到的數(shù)據(jù)可

能含有各種不同的類型。若該函數(shù)成功調(diào)用,返回count

的值。

第72章文件類型

例如:

inta[100];

fread(a,2,100,fp);/*從中讀取100個(gè)大小為

2字節(jié)的數(shù)據(jù)塊(整數(shù))到數(shù)組a中*/

第72章文件類型

2.數(shù)據(jù)塊數(shù)據(jù)的寫

函數(shù)原型:

unsignedfwrite(void*buffer,unsignedsize,unsignedcount,

FILE*fp);

功能:向文件指針中所指的文件寫入由buffer指針?biāo)?/p>

標(biāo)識(shí)的count個(gè)大小為size字節(jié)的數(shù)據(jù)塊。若該函數(shù)成功

調(diào)用,返回count的值。例如:

inta[100];

fwrite(a,2,100,fp);/*將整個(gè)數(shù)組a寫入文件中中*/

第72章文件類型

12.3.5格式化數(shù)據(jù)的讀和寫

函數(shù)原型:

intfscanf(FILE*fp,格式字串,變量地址表);

intfprintf(FILE*fp,格式字串,變量表);

使用fscanf()和幣rintf()函數(shù)對(duì)磁盤文件進(jìn)行讀

和寫,相當(dāng)方便。但是輸入時(shí)需將ASCII碼轉(zhuǎn)換為二進(jìn)制,

輸出時(shí)需將二進(jìn)制轉(zhuǎn)換成ASCII碼,需花費(fèi)較多的時(shí)間,

故一般較少采用,而是使用fread()和fwrite()函數(shù)。

第72章文件類型

例如:

inti,j;

floatf;

fscanf(fp,〃%d%d%P,&i,&j,&f);/*

從中中按指定格式讀取數(shù)據(jù)至i、j、f中*/

第上章文件類型________________

12.3.6文件的建立步驟

對(duì)文件操作前必須打開文件,文件打開后才可進(jìn)

行讀寫操作,操作完成應(yīng)關(guān)閉文件。

文件的建立步驟如下:

(1)以寫方式打開文件。

(2)將數(shù)據(jù)寫入文件,多個(gè)數(shù)據(jù)反復(fù)寫入。

(3)寫完數(shù)據(jù)關(guān)閉文件。

第72章文件類型

例12-1定義一個(gè)函數(shù),建立存放26個(gè)英文小寫字母的文件LF.DAT。

voidcreatfile()

{char1;

FILE*fp;

if((fp=fopen("LF.DAT","w"))==NULL)/*打開文件*/

{printf("不能打開文件!");

exit(0);

}

fbr(l='a';1++)/*寫入數(shù)據(jù)*/

fputc(1,fp);

fclose(fp);/*關(guān)閉文件*/

第72章文件類型

例12?2定義一個(gè)函數(shù),建立存放某班50個(gè)同學(xué)姓名、

C語(yǔ)言成績(jī)的數(shù)據(jù)文件CCJ.DAT,原始數(shù)據(jù)由數(shù)組參數(shù)傳入。

voidcreatfile(floatx[])

{inti;

FILE*fp;

if((fp=fopen(〃CCJ.DAT〃,〃wb"))==NULL)/*打開文件*/

{printf("不能打開文件!”);

exit(0);

}

for(i=0;iv=50;i++)/*寫入數(shù)據(jù)*/

fwrite(x+i,4,1,fp);

fclose(fp);/*關(guān)閉文件*/

第72章文件類型

寫入數(shù)據(jù)也可以整體一次完成:

fwrite(x,4,50,fp);

⑴文件的建立在操作系統(tǒng)下可通過(guò)改向操作完成。

(2)數(shù)據(jù)源文件也可通過(guò)任何字處理軟件建立。

(3)執(zhí)行一個(gè)向打印機(jī)寫的操作,可在程序中實(shí)現(xiàn)數(shù)據(jù)

的打印輸出。

例如:

fp=fopen("PRN:","w");

fputs("HUNANCOMPUTER",fp);/*打印輸出

HUNANCOMPUTER*/

打印輸”也喈接住手系統(tǒng)

第72章文件類型

12.3.7文件的讀取控制

while(fgetc(fp)!=EOF)

{讀取數(shù)據(jù)}

while(!feof(fp))

{讀取數(shù)據(jù)}

對(duì)于二進(jìn)制文件,由于最后一個(gè)數(shù)據(jù)可能為-1

(EOF),最好用feof()函數(shù)判斷。

第72章文件類型

例12-3從上例建立的文件CCJ.DAT中讀出學(xué)生的C

語(yǔ)言成績(jī),求出每個(gè)學(xué)生與平均成績(jī)之差。

/*程序12-3,求每個(gè)學(xué)生與平均成績(jī)之差*/

structst

{char*name;

floatcj;

}C[200];

main()

{inti=0,n;

floatsum=0,av;

floatsav[200];

FILE*fp;

第72章文件類型

if((fp=fopen("CCJ.EAT",〃rb〃))==NULL)/*打開文件*/

{printf("不能打開文件!");

while(!feof(fjp))/*讀數(shù)據(jù),同時(shí)進(jìn)行累加*/

{fread(c+i,4,1,fp);

sum+=c[i].cj;

i++;

}

n=i;

av=sum/n;/*求平均成績(jī)*/

for(i=0;i<n;i++)/*求與平均成績(jī)之差并輸出*/

{sav[i]=c[i].cj-av;

printf("%s,%6.1f,c[i].name,c[i].cj,sav[i]);

第72章文件類型

12.4文件輔助操作

1.反繞函數(shù)

函數(shù)原型:

voidrewind(FILE*fp);

功能:使文件的讀寫位置指針?lè)祷匚募_頭。

第72章文件類型

2.隨機(jī)定位函數(shù)

函數(shù)原型:

intfseek(FILE*fp,longintnumbytes,intorigin);

功能:將文件的位置指針移動(dòng)numbytes個(gè)字節(jié),

numbytes為正數(shù)表示后移,為負(fù)數(shù)表示前移。其中移動(dòng)的

開始位置由origin確定,origin的值可以為0、1、2,或

SEEK-SET、SEEK-CUR、SEEK-END,分另U代表

“文件開頭”、“當(dāng)前位置”、“文件末尾”三個(gè)特殊位

置。________________________________

第72章文件類型

例如:

(1)fseek(fp,1001,0);/*將文件的位置指針

移動(dòng)到離文件開頭100個(gè)字節(jié)處*/

(2)fseek(fp,501,1);/*將文件的位置指針向

前移動(dòng)50個(gè)字節(jié)處*/

(3)fseek(fp,-101,2);/*將文件的位置指針

向后移10個(gè)字節(jié)處*/利用隨機(jī)定位函數(shù)實(shí)現(xiàn)對(duì)文件的隨

機(jī)讀寫。

第72章文件類型

3.求當(dāng)前讀寫位置函數(shù)

函數(shù)原型:

longintftell(FILE*fp);

功能:

得到文件的當(dāng)前讀寫位置指針,用相對(duì)于文件開

頭的位移量來(lái)表示。若出現(xiàn)調(diào)用錯(cuò)誤,返回值為-1。

第72章文件類型

4.出錯(cuò)檢測(cè)函數(shù)

函數(shù)原型:

intferror(FILE*fp);

功能:

檢查文件中各種輸入輸出函數(shù)調(diào)用是否出錯(cuò)。

若得到的函數(shù)值為0,表示未出錯(cuò);得到的函數(shù)值非

0,表示出錯(cuò)。

調(diào)用fopen()函數(shù)時(shí),ferror初值自動(dòng)置0。

第/Z章文件類型________________

5.初始化清零函數(shù)

函數(shù)原型:

voidclearerr(FILE*fp);

功能:

清除文件錯(cuò)誤標(biāo)志和文件結(jié)束,將文件錯(cuò)誤標(biāo)志和

文件結(jié)束標(biāo)志置0。

輸入輸出函數(shù)調(diào)用出錯(cuò)后,出錯(cuò)標(biāo)志一直保留,直到

對(duì)同一文件調(diào)用clearerr()函數(shù)、rewind()函數(shù)或任

一輸入輸出函數(shù)。

第72章文件類型

12.5程序設(shè)計(jì)舉例

例12-4從鍵盤輸入若干字符,存入某磁盤文件中,

然后從文件中讀取數(shù)據(jù)打印輸出。

/*程序12-4,輸入若干字符至文件,并打印輸出*/

main

{charch,*fhame;

FILE*fp,*pp;

scanf("%s",fname);/*輸入磁盤文件名*/

/*建立文件*/

第72章文件類型

if((fp=fopen(fhame,"w"))==NULL)

{printf("文件不能打開!");

exit(0);

ch=getchar();

while(ch!='\n')

{fputc(ch,fp);

ch=getchar();

fblose(fp);

/*從剛建立的磁盤文件中讀取數(shù)據(jù),打印輸出*/

if((fp=fbpen(fhame,"r"))==NULL)

{printf("數(shù)據(jù)文件不能打開!");

exit(0);

第72章文件類型

if((pp=fbpen("PRN:","w〃))==NULL)

{printf("打印機(jī)沒(méi)能連接!〃);

exit(0);

}

ch=fgetc(fp);

while(!feof(fp))

{fprintf(pp,"%6c",ch)

ch=fgetc(fp);

fclose(fp);

fclose(pp);

第72章文件類型

例12?5學(xué)生信息包含有學(xué)號(hào)、姓名、年齡、成績(jī)

及住址,從鍵盤輸入n個(gè)學(xué)生的這些信息,然后存入一個(gè)

磁盤文件STUDENT.DAT中。

/*程序12-5,建立學(xué)生信息文件*/

#defineSIZE200

structstudent

{intnum;

char*name;

intage;

floatscore;

char*addr;

}stud[SIZE];

intn;

第72章文件類型

voidsave()/*建立文件STUDENT.DAT*/

{FILE*fp;

inti;

if((fp=fbpen("STUDENT.DAT",〃wb"))==NULL)

{printf("不能建立文件!");

exit(0);

}

for(i=0;i<n;i++)

if(fwrite(&stud[i],sizeof(structstudent),1,fp)!=1)

{printf("文件不能寫!\n");

exit(0);

}

第72章文件類型

fclose(fp);

}

main()

{inti;

scanf("%d",&n);

for(i=0;i<n;i++)/*從鍵盤輸入數(shù)據(jù)*/

scanf("%d%s%d%f%s",&stud[i].mum,stud[i].name,

&stud[i].age,&stud[i].score,stud[i].addr);

save();/*調(diào)用函數(shù)建立文件*/

第72章文件類型

例12-6編寫類似DOS拷貝命令的文件復(fù)制程序。

/*程序12-6,拷貝命令程序*/

main(intargc,char*argv[])

{inti;

FILE*fps,*fpt;

if(argc!=3)

{puts("命令行參數(shù)格式是:執(zhí)行文件名源文件名目標(biāo)文件名〃);

exit(0);

}

if((fps=fbpen(argv[1],"rb"))==NULL)

{printf("源文件不能打開!");

exit(0);

第72章文件類型

if((fpt=fbpen(argv[2],"wb"))==NULL)

{printf("目標(biāo)文件不能建立!");

exit(0);

}

while(!feof(fps))

{fread(&i,2,1,fps);

fwrite(&i,2,1,fpt);

fclsoe(fps);

fclose(fpt);

第72章文件類型

例12-7對(duì)例11-5建立的磁盤文件STUDENT.DAT,

首先在屏幕上輸出文件內(nèi)容,然后使指針移到開頭,實(shí)現(xiàn)

文件的復(fù)制。

/*程序12-7,文件的輸出復(fù)制操作*/

#defineSIZE200

structstudent

{intnum;

char*name;

intage;

floatscore;

char*addr;

}stud;

第72章文件類型

main()

{FILE*fpl,*fp2;

char*tname;

inti=0;

if((fpl=fopen("STUDENT.DAT",〃rb"))=NULL)

{printf("不能打開文件!");

exit(0);

}

while(!feof(fpl))/*屏幕輸出*/

{fread(&stud,sizeof(structstu

溫馨提示

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

評(píng)論

0/150

提交評(píng)論