




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章 文件系統(tǒng)《C語(yǔ)言程序設(shè)計(jì)》
2學(xué)習(xí)目標(biāo)與要求1、理解文件、文件系統(tǒng)、文件指針的概念2、了解文件的分類(lèi)情況,掌握文本文件與二進(jìn)制文件區(qū)別3、掌握文件的打開(kāi)和關(guān)閉的含義,會(huì)合理使用各種不同的打開(kāi)方式4、掌握使用字符讀寫(xiě)函數(shù)、字符串讀寫(xiě)函數(shù)、數(shù)據(jù)塊讀寫(xiě)函數(shù)、格式讀寫(xiě)函數(shù)、和定位函數(shù)對(duì)文件進(jìn)行順序或隨機(jī)讀寫(xiě)5、能編寫(xiě)對(duì)文件進(jìn)行處理的實(shí)用程序《C語(yǔ)言程序設(shè)計(jì)》
3本章要點(diǎn)文件系統(tǒng)
文件的打開(kāi)與關(guān)閉文件的字符讀寫(xiě)文件的字符串讀寫(xiě)文件的數(shù)據(jù)塊讀寫(xiě)文件的格式化讀寫(xiě)文件的定位小結(jié)《C語(yǔ)言程序設(shè)計(jì)》
4文件系統(tǒng)“文件”是指一組相關(guān)數(shù)據(jù)的有序集合。為了標(biāo)識(shí)一個(gè)文件,每個(gè)文件都必須有一個(gè)文件名。其一般結(jié)構(gòu)為:主文件名.[擴(kuò)展文件名]。主文件的命名規(guī)則遵循操作系統(tǒng)的規(guī)定,擴(kuò)展名表示文件的類(lèi)型。例如:一個(gè)C語(yǔ)言源程序擴(kuò)展名為“c”,擴(kuò)展名有時(shí)也可以省略?!禖語(yǔ)言程序設(shè)計(jì)》
5從不同的角度可對(duì)文件作不同的分類(lèi)。1、按文件的組織形式分類(lèi)(1)順序存取文件順序存取文件是指存取文件只能從頭開(kāi)始,順序存取各個(gè)數(shù)據(jù)。(2)隨機(jī)存儲(chǔ)文件隨機(jī)存儲(chǔ)文件是指可先移動(dòng)文件內(nèi)部的位置指針到需要讀寫(xiě)的位置,再進(jìn)行存取其中數(shù)據(jù)。《C語(yǔ)言程序設(shè)計(jì)》
62、按記錄的邏輯結(jié)構(gòu)分類(lèi)(1)記錄文件具有一定結(jié)構(gòu)的記錄組成,可以指定長(zhǎng)度,也可以不指定長(zhǎng)度。如數(shù)據(jù)庫(kù)文件。(2)流式文件由一連串的字符(字節(jié))數(shù)據(jù)順序組成。如C系統(tǒng),把文件都看成是字符流,按字節(jié)進(jìn)行處理。輸入輸出字符流的開(kāi)始和結(jié)束只由程序控制而不受物理符號(hào)(如回車(chē)符)的控制,更靈活。《C語(yǔ)言程序設(shè)計(jì)》
73、按文件的內(nèi)容來(lái)分類(lèi)(1)程序文件程序文件是由程序代碼組成的有序集合,又可分為源文件、目標(biāo)文件和可執(zhí)行程序。(2)數(shù)據(jù)文件數(shù)據(jù)文件是由一系列數(shù)據(jù)組成的有序集合,如各種輸入輸出數(shù)據(jù),包括文檔文件、圖形文件和聲音文件?!禖語(yǔ)言程序設(shè)計(jì)》
84、按數(shù)據(jù)的組織形式來(lái)分類(lèi)(1)文本文件又稱ASCII碼文件,在磁盤(pán)中存放字符對(duì)應(yīng)的一個(gè)字節(jié)的ASCII碼。例如,數(shù)12345的存儲(chǔ)形式為:字符形式ASCII碼(十進(jìn)制)ASCII碼(二進(jìn)制)'1'4900110001'2'5000110010'3'5100110011'4'5200110100'5'5300110101《C語(yǔ)言程序設(shè)計(jì)》
9(2)二進(jìn)制文件按二進(jìn)制的編碼方式來(lái)存放文件。例如,數(shù)12345的存儲(chǔ)形式為:0011000000111001只占二個(gè)字節(jié)。當(dāng)用戶建立的文件主要是為了進(jìn)行數(shù)據(jù)處理時(shí),最好建立成二進(jìn)制文件,可以提高速度;如果是為了輸出到顯示器或打印機(jī)供人們閱讀,則建立成文本文件更恰當(dāng)?!禖語(yǔ)言程序設(shè)計(jì)》
105、按存儲(chǔ)介質(zhì)分類(lèi)(1)普通文件駐留在磁盤(pán)或其它外部介質(zhì)上的一個(gè)有序數(shù)據(jù)集,可以是源文件、目標(biāo)文件、可執(zhí)行程序;也可以是一組待輸入處理的原始數(shù)據(jù),或者是一組輸出的結(jié)果。(2)設(shè)備文件設(shè)備文件是指與主機(jī)相聯(lián)的各種外部設(shè)備,如顯示器、打印機(jī)、鍵盤(pán)等。C語(yǔ)言編譯程序把各種輸入輸出設(shè)備也當(dāng)作文件處理?!禖語(yǔ)言程序設(shè)計(jì)》
11typedef
struct{shortlevel;unsignedflags;charfd;
unsignedcharhold;shortbsize;
unsignedchar*buffer,*curp;unsignedistemp;shorttoken;
}FILE;TurboC中在頭文件“stdio.h”中,定義了FILE結(jié)構(gòu)體類(lèi)型。《C語(yǔ)言程序設(shè)計(jì)》
12程序說(shuō)明:level短整型變量,數(shù)值表示緩沖區(qū)“滿”或“空”的程度;無(wú)符號(hào)整型變量flags標(biāo)識(shí)文件的狀態(tài);字符變量fd為文件描述符即表示文件名;如無(wú)緩沖區(qū)則不讀取無(wú)符號(hào)字符型變量hold的值;短整型變量bsize表示緩沖區(qū)的大小;指針buffer指向數(shù)據(jù)緩沖區(qū)的位置,指針curp表示當(dāng)前指針的指向;istemp是指向臨時(shí)文件的指示器;短整型變量token用于進(jìn)行有效性檢查。注意:其中FILE應(yīng)為大寫(xiě),它是由系統(tǒng)定義的一個(gè)結(jié)構(gòu)?!禖語(yǔ)言程序設(shè)計(jì)》
13在C語(yǔ)言中用一個(gè)指針變量指向一個(gè)文件,這個(gè)指針?lè)Q為文件指針。定義文件指針。格式如下:FILE*指針變量標(biāo)識(shí)符;例如:FILE*fp;表示fp是指向FILE結(jié)構(gòu)的指針變量,通過(guò)fp就可找存放某個(gè)文件信息的結(jié)構(gòu)變量,然后按結(jié)構(gòu)變量提供的信息找到該文件,實(shí)施對(duì)文件的操作。習(xí)慣上把fp稱為指向一個(gè)文件的指針?!禖語(yǔ)言程序設(shè)計(jì)》
14注意:文件的讀寫(xiě)指針不同與文件指針,文件指針用來(lái)指向整個(gè)文件的,即指向所指文件的“文件信息區(qū)”的地址,須在程序中定義說(shuō)明。對(duì)某個(gè)被打開(kāi)的文件來(lái)說(shuō),只要不重新賦值,該文件的指針是不會(huì)改變?!禖語(yǔ)言程序設(shè)計(jì)》
15C語(yǔ)言提供兩種文件處理方式:緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)。緩沖文件系統(tǒng)功能強(qiáng)、使用方便,但效率稍低,而非緩沖文件系統(tǒng)執(zhí)行效率高。緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)都是通過(guò)標(biāo)準(zhǔn)庫(kù)函數(shù)實(shí)現(xiàn)文件的操作。本章只介紹緩沖文件系統(tǒng)下的文件操作,這些操作都是用庫(kù)函數(shù)來(lái)實(shí)現(xiàn)的。《C語(yǔ)言程序設(shè)計(jì)》
16文件的打開(kāi)與關(guān)閉在進(jìn)行文件操作之前要先打開(kāi)文件,使用完畢要關(guān)閉。所謂打開(kāi)文件,實(shí)際上是建立文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行其它操作。關(guān)閉文件則斷開(kāi)指針與文件之間的聯(lián)系,也就禁止再對(duì)該文件進(jìn)行操作。在C語(yǔ)言中,文件操作都是由庫(kù)函數(shù)來(lái)完成的,這些函數(shù)在頭文件“stdio.h”中?!禖語(yǔ)言程序設(shè)計(jì)》
17文件的打開(kāi)(fopen函數(shù))它的原型如下:FILE*fopen(constchar*,constchar*mode);說(shuō)明:1、形參是一個(gè)字符指針變量,指向字符型數(shù)據(jù)。調(diào)用時(shí),實(shí)參一般用字符串常量或字符數(shù)組名,它們表示要打開(kāi)的文件名,文件名前面可以帶路徑。2、形參mode也是一個(gè)字符指針變量,指向字符型數(shù)據(jù),調(diào)用時(shí),實(shí)參一般用字符串,表示打開(kāi)文件的方式?!禖語(yǔ)言程序設(shè)計(jì)》
18它由兩類(lèi)字符構(gòu)成,一類(lèi)字符表示打開(kāi)文件的類(lèi)型,文本文件(text)用字符“t”表示;二進(jìn)制文件(binary)用字符“b”表示,如省略則默認(rèn)為文本文件。另一類(lèi)字符表示文件的使用方式,它有12種。為了便于記憶,我們把12個(gè)文件的使用方式分為兩組,第一組為基本方式,有讀或?qū)憙烧咧坏墓δ埽坏诙M為增強(qiáng)方式,用“+”表示,有讀和寫(xiě)兩個(gè)功能。每組又分為文本文件和二進(jìn)制文件兩種方式,每種文件都有“r”、“w”、“a”這3種基本字符,分別表示讀、寫(xiě)和追加方式。《C語(yǔ)言程序設(shè)計(jì)》
20要注意的是在實(shí)參字符串中,文件的使用方式在前,文件的類(lèi)型符在后,如"rb"、"wb",不可寫(xiě)成"br"、"bw"。對(duì)于“+”來(lái)說(shuō),可以放在文件的使用方式的右邊,也可以放在文件的類(lèi)型符的右邊,但不可放在文件的使用方式的左邊。如“w+b”或“wb+”都是正確的,而“+wb”則是錯(cuò)誤的。《C語(yǔ)言程序設(shè)計(jì)》
213、此函數(shù)的功能是按指定的方式打開(kāi)文件。如果文件打開(kāi)成功,則返回該文件結(jié)構(gòu)體的指針;如果讀文件時(shí)文件不存在,或者寫(xiě)文件時(shí)文件不能創(chuàng)建則打開(kāi)失敗,則返回NULL。4、函數(shù)的調(diào)用的一般形式為:文件指針名=fopen(文件名,使用文件方式);例如:FILE*fp;fp=("f.txt","r");其意義是在當(dāng)前目錄下打開(kāi)文本文件f.txt,只允許進(jìn)行“讀”操作,并使fp指向該文件?!禖語(yǔ)言程序設(shè)計(jì)》
22又如:FILE*gp;gp=("c:\\bx\\abc","rb");其意義是打開(kāi)C驅(qū)動(dòng)器磁盤(pán)的根目錄下bx文件夾中的文件abc,這是一個(gè)二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。兩個(gè)反斜線“\\”中的第一個(gè)表示轉(zhuǎn)義字符,第二個(gè)表示文件路徑的逐級(jí)目錄分隔符。5、fopen函數(shù)一次只能打開(kāi)一個(gè)文件,如需打開(kāi)多個(gè)文件,則要多次調(diào)用該函數(shù)。《C語(yǔ)言程序設(shè)計(jì)》
23【例8-1】以讀方式打開(kāi)C盤(pán)根目錄下bx文件夾中的文件abc,如果打開(kāi)失敗,則退出系統(tǒng)。#include<stdio.h>voidmain(){FILE*gp;gp=fopen("c:\\bx\\abc","rb");if(gp==NULL){printf("\nthisfoundorcan'topen,strikeanykeyexit!");getch();exit(0);}}《C語(yǔ)言程序設(shè)計(jì)》
24
程序運(yùn)行情況:thisfoundorcan'topen,strikeanykeyexit!
程序說(shuō)明:因?yàn)槭孪葲](méi)有在C盤(pán)根目錄下bx文件夾中創(chuàng)建文件abc,則返回的指針為空,給出提示信息“thisfoundorcan'topen!”。getch()語(yǔ)句的作用是從鍵盤(pán)輸入一個(gè)字符,但不在屏幕上顯示。在這里的作用是等待,用戶可利用這個(gè)等待時(shí)間閱讀出錯(cuò)提示,只有當(dāng)用戶從鍵盤(pán)敲任一鍵時(shí),程序才繼續(xù)執(zhí)行exit(0)語(yǔ)句,退出程序?!禖語(yǔ)言程序設(shè)計(jì)》
25文件關(guān)閉函數(shù)(fclose函數(shù))文件一旦使用完畢,應(yīng)該用關(guān)閉文件函數(shù)把文件關(guān)閉,以避免文件的數(shù)據(jù)丟失等錯(cuò)誤。它的原型為:int*fclose(FILE*fp);說(shuō)明:1、形參fp是一個(gè)文件指針變量,通常這個(gè)參數(shù)就是fopen函數(shù)的返回值。2、此函數(shù)的功能是關(guān)閉文件指針fp所指向的文件。如果正常關(guān)閉了文件,則函數(shù)的返回值為0;如果有錯(cuò)誤發(fā)生,則返回EOF。EOF是在頭文件“stdio.h”中定義的符號(hào)常量,其值為-1?!禖語(yǔ)言程序設(shè)計(jì)》
263、函數(shù)調(diào)用的一般形式是:fclose(文件指針);例如:fclose(fp);我們應(yīng)該養(yǎng)成在程序終止之前關(guān)閉所有文件的習(xí)慣。只有用fclose函數(shù)關(guān)閉文件,才可以避免緩沖區(qū)的數(shù)據(jù)丟失。fclose函數(shù)一次只能關(guān)閉一個(gè)文件,如需關(guān)閉多個(gè)文件,則要多次調(diào)用該函數(shù)。《C語(yǔ)言程序設(shè)計(jì)》
27文件的讀寫(xiě)讀文件是將磁盤(pán)文件中的數(shù)據(jù)傳送到計(jì)算機(jī)內(nèi)存的操作,寫(xiě)文件是從計(jì)算機(jī)內(nèi)存向磁盤(pán)文件傳送數(shù)據(jù)的操作。文件的讀寫(xiě)函數(shù)主要包括:字符讀寫(xiě)函數(shù)(fgetc和fputc)字符串讀寫(xiě)函數(shù)(fgets和fputs)數(shù)據(jù)塊讀寫(xiě)函數(shù)(freed和fwrite)格式化讀寫(xiě)函數(shù)(fscanf和fprinf)《C語(yǔ)言程序設(shè)計(jì)》
28文件的字符讀寫(xiě)字符讀寫(xiě)函數(shù)fgetc和fputc是以字符(字節(jié))為單位的讀寫(xiě)函數(shù)。每次可從文件讀出或向文件寫(xiě)入一個(gè)字符。1、寫(xiě)字符函數(shù)fputc它的原型如下:intfputc(intc,FILE*fp);說(shuō)明:(1)該函數(shù)功能是將字符數(shù)據(jù)c輸出到文件指針fp所指向的文件中去,同時(shí)將文件的讀寫(xiě)指針向后(向下)移動(dòng)一個(gè)字節(jié)(字符),即指向下一個(gè)寫(xiě)入位置?!禖語(yǔ)言程序設(shè)計(jì)》
29(2)如果輸出成功,則函數(shù)的返回值就是字符數(shù)據(jù)c的ASCII碼值;否則返回EOF(-1)。可用此來(lái)判斷寫(xiě)入是否成功。(3)函數(shù)調(diào)用的形式為:fputc(字符量,文件指針);例如:fputc('a',fp);其意義是把字符a寫(xiě)入fp所指向的文件中。其中,待寫(xiě)入的字符量可以是字符常量或變量。又如:fputc(c,stdout);該語(yǔ)句等價(jià)于putchar(c);表示將字符變量c的內(nèi)容輸出到終端,一般指顯示器。《C語(yǔ)言程序設(shè)計(jì)》
30注意:在fputc函數(shù)調(diào)用中,被寫(xiě)入的文件可以用寫(xiě)、讀寫(xiě),追加方式打開(kāi)。用寫(xiě)或讀寫(xiě)方式打開(kāi)一個(gè)已存在的文件時(shí)將清除原有的文件內(nèi)容,寫(xiě)入字符從文件首開(kāi)始。如需保留原有文件內(nèi)容,希望寫(xiě)入的字符以文件末開(kāi)始存放,必須以追加方式打開(kāi)文件。被寫(xiě)入的文件若不存在,則創(chuàng)建該文件?!禖語(yǔ)言程序設(shè)計(jì)》
31【例8-2】從鍵盤(pán)輸入一行字符,把它們顯示在屏幕上,同時(shí)寫(xiě)入當(dāng)前目錄下的“”文件中。程序運(yùn)行情況:inputastring:China↙China程序示例《C語(yǔ)言程序設(shè)計(jì)》
32程序說(shuō)明:①語(yǔ)句if((fp=fopen("","w"))==NULL)等價(jià)于fp=fopen("","w");if(fp==NULL)兩條語(yǔ)句。因?yàn)檫壿嬤\(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,語(yǔ)句fp=fopen(“”,“w”);兩邊一定要加上括號(hào)。該語(yǔ)句的功能是先以只寫(xiě)方式打開(kāi)文件"",并使指針變量fp指向該文件,接著判斷fp是否為空?!禖語(yǔ)言程序設(shè)計(jì)》
33②通過(guò)while語(yǔ)句將一行字符輸出到屏幕上,同時(shí)寫(xiě)入文件中。③最后用fclose函數(shù)關(guān)閉文件,把緩沖區(qū)的數(shù)據(jù)輸出到磁盤(pán)文件,并且釋放文件指針變量。④本程序運(yùn)行后,會(huì)在當(dāng)前目錄創(chuàng)建一個(gè)包含有“China”這幾個(gè)字符的“”文件??芍苯佑糜浭卤敬蜷_(kāi)該文件,也可以在DOS狀態(tài)下,輸入“type”命令查看文件內(nèi)容。《C語(yǔ)言程序設(shè)計(jì)》
342、讀字符函數(shù)fgetc它的原型如下:intfgetc(FILE*fp);說(shuō)明:(1)該函數(shù)功能是從文件指針fp所指向的文件中,讀入一個(gè)字節(jié)(字符),同時(shí)將文件的讀寫(xiě)指針向后(向下)移動(dòng)一個(gè)字節(jié)(字符),即指向下一個(gè)讀入位置。(2)如果讀取正常,返回讀到的字節(jié)值;如果讀到文件尾或出錯(cuò),則返回EOF(-1)?!禖語(yǔ)言程序設(shè)計(jì)》
35(3)函數(shù)調(diào)用的一般形式為:字符變量=fgetc(文件指針);例如:ch=fgetc(fp);其意義是從打開(kāi)的文件fp中讀取一個(gè)字符并賦給變量ch。再如:fgetc(stdin);該語(yǔ)句等價(jià)于getchar();表示從鍵盤(pán)中讀取一個(gè)字符。注意:在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫(xiě)方式打開(kāi)的。在文件打開(kāi)時(shí),文件的讀寫(xiě)指針總是指向文件的第一個(gè)字節(jié)。使用fgetc函數(shù)后,該位置指針將向后移動(dòng)一個(gè)字節(jié)。《C語(yǔ)言程序設(shè)計(jì)》
36(4)判斷文件是否結(jié)束。方法一:用EOF來(lái)判斷文件,部分語(yǔ)句如下:while((ch=fgetc(fp))!=EOF)…方法二:用函數(shù)feof用來(lái)判斷文件是否結(jié)束。如果遇到文件結(jié)束,函數(shù)的返回值為1,否則為0。部分語(yǔ)句為:while(!feof(fp)){ch=fgetc(fp);…}當(dāng)讀取文本文件時(shí),可以用上述兩種方法判斷文件是否結(jié)束。但當(dāng)讀取二進(jìn)制文件時(shí),只可以用第二種方法。因?yàn)槎M(jìn)制文件中某一字節(jié)內(nèi)容可以是-1,即可能等于EOF,而文本文件中字符的ASCII碼值總是大于等于0。《C語(yǔ)言程序設(shè)計(jì)》
37【例8-3】在屏幕上輸出上例生成的文件“”的內(nèi)容。程序運(yùn)行情況:thecontentofthis程序說(shuō)明:①本程序先以只讀方式打開(kāi)文件"",并使指針變量fp指向該文件,如果文件""沒(méi)通過(guò)上例生成,則可用記事本建立,否則程序會(huì)顯示"thisfoundorcan'topen!"提示錯(cuò)誤信息。程序示例《C語(yǔ)言程序設(shè)計(jì)》
38②通過(guò)while語(yǔ)句將文件""中的所有字符輸出到屏幕上。每執(zhí)行一次循環(huán),從文件的讀寫(xiě)指針?biāo)傅淖x寫(xiě)位置處讀入一個(gè)字符賦給變量ch,然后判斷該字符是否是文件的結(jié)束標(biāo)識(shí)EOF,若是,結(jié)束循環(huán);否則,將該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件的讀寫(xiě)指針向后移動(dòng)一個(gè)字符,文件結(jié)束時(shí),該指針指向EOF。③最后用fclose函數(shù)關(guān)閉文件,釋放文件指針變量?!禖語(yǔ)言程序設(shè)計(jì)》
39【例8-4】設(shè)計(jì)一個(gè)程序,實(shí)現(xiàn)文本文件的復(fù)制。程序運(yùn)行情況:Enterthesource:↙Enterthedestination:↙程序說(shuō)明:①在提示“Enterthesource:”時(shí),用戶輸入源文件名"",賦給字符數(shù)組file1,接著用fopen函數(shù)的讀方式打開(kāi)該文件,使指針fp1指向文件""。程序示例《C語(yǔ)言程序設(shè)計(jì)》
40②在提示“Enterthedestinationname:”時(shí),用戶輸入目標(biāo)文件名"",賦給字符數(shù)組file2,接著用fopen函數(shù)的寫(xiě)方式打開(kāi)該文件,使指針fp2指向文件""。③while語(yǔ)句的作用是將文件""中的所有字符輸出到文件""中,每執(zhí)行一次循環(huán),先用feof函數(shù)來(lái)判斷文件是否結(jié)束,若是,結(jié)束循環(huán),否則,從文件""的讀寫(xiě)指針?biāo)傅淖x寫(xiě)位置處讀入一個(gè)字符,并且寫(xiě)入到""的讀寫(xiě)指針?biāo)傅淖x寫(xiě)位置處?!禖語(yǔ)言程序設(shè)計(jì)》
41④最后用fclose函數(shù)關(guān)閉兩個(gè)文件。上述程序是按文本文件方式處理的。如要復(fù)制的文件為二進(jìn)制文件,只需要將兩個(gè)fopen函數(shù)中的"r"改成"rb"、"w"改成"wb"即可。有時(shí)我們希望像使用DOS中的copy命令一樣,在輸入命令時(shí)連著兩個(gè)文件名一起輸入,這就要用到命令行參數(shù),同時(shí)我們要把上例程序改寫(xiě)成帶參數(shù)的main函數(shù)?!纠?-5】帶參數(shù)的main函數(shù)。程序示例《C語(yǔ)言程序設(shè)計(jì)》
42程序說(shuō)明:程序中定義了兩個(gè)文件指針fp1和fp2,分別指向命令行參數(shù)中給出的文件。如果輸入的參數(shù)不為三個(gè),則程序會(huì)給出“Youmustenterthesourcethedestination:”的錯(cuò)誤提示,提醒用戶必須輸入源文件和目標(biāo)文件名。while循環(huán)的作用是逐個(gè)讀出文件1中的字符再送到文件2中?!禖語(yǔ)言程序設(shè)計(jì)》
43假設(shè)本程序的源文件保存為8-5.c,經(jīng)過(guò)編譯連接后得到的可執(zhí)行文件名為8-5.exe,則在DOS命令工作方式下,輸入可執(zhí)行文件名“8-5源文件名目標(biāo)文件名”。注意,此程序要運(yùn)行成功,必須先建立好提供復(fù)制的源文件。例如輸入:8-5↙此命令行共有3個(gè)參數(shù),因此argc的值為3,同時(shí)傳遞參數(shù)"8-5"給argv[0]、""給argv[1]、""給argv[2],程序運(yùn)行后就把""文件中的內(nèi)容復(fù)制到""中。我們可以打開(kāi)這兩個(gè)文件查看,或用type命令驗(yàn)證?!禖語(yǔ)言程序設(shè)計(jì)》
44還要說(shuō)明的是,TurboC系統(tǒng)在庫(kù)文件"stdio.h"把fputc和fgetc函數(shù)定義為宏名putc和getc,語(yǔ)句如下:#defineputc(ch,fp)fputc(ch,fp)#definegetc(fp)fgetc(fp)為了書(shū)寫(xiě)方便,我們經(jīng)常用putc函數(shù)代替fputc函數(shù),用getc函數(shù)代替fgetc函數(shù)?!禖語(yǔ)言程序設(shè)計(jì)》
45文件的字符串讀寫(xiě)字符串讀寫(xiě)函數(shù)fgets和fputs是以字符串的形式對(duì)文件進(jìn)行讀寫(xiě)的函數(shù)。每次可從文件讀出(指定長(zhǎng)度)或向文件寫(xiě)入一個(gè)字符串。1、寫(xiě)字符串函數(shù)fputs它的原型如下:intfputs(constchar*s,FILE*fp);說(shuō)明:《C語(yǔ)言程序設(shè)計(jì)》
46(1)該函數(shù)功能是將指針s所指向的字符串寫(xiě)到文件指針fp所指向的文件中去,同時(shí)將文件的讀寫(xiě)指針向后(向下)移動(dòng)字符串長(zhǎng)度個(gè)字節(jié)(字符)。注意,fputs函數(shù)不會(huì)將字符串結(jié)束符'\0'寫(xiě)入文件,也不會(huì)自動(dòng)向文件寫(xiě)入換行符,所以輸出到文件中的各字符串連在一起,沒(méi)有分隔符。為了便于以后從文件中讀數(shù)據(jù)時(shí)能區(qū)分各字符串,s字符串中要包含換行符'\n',也可以單獨(dú)使用函數(shù)fputs("\n",fp)或函數(shù)fputc('\n',fp)。請(qǐng)注意這兩個(gè)函數(shù)用法上的區(qū)別?!禖語(yǔ)言程序設(shè)計(jì)》
47(2)如果操作成功,函數(shù)的返回值就是最后寫(xiě)入文件的字符值;否則返回EOF(-1)。(3)函數(shù)調(diào)用的形式為:fputs(字符串,文件指針);例如:fputs("abcd",fp);其意義是把字符串"abcd"寫(xiě)入fp所指的文件之中。又如在語(yǔ)句fputs(str,fp);中,str可以是字符串常量,也可以是存放字符串的字符數(shù)組名,或指向字符串的指針變量。《C語(yǔ)言程序設(shè)計(jì)》
48【例8-6】從鍵盤(pán)輸入若干行字符,把它們追加到例8-2中建立的“”文件中。程序運(yùn)行情況:inputastring:Howareyou?↙inputastring:Iamfine.↙inputastring:↙程序說(shuō)明:①本例要求在""文件追加字符串,因此,用fopen函數(shù)的追加方式打開(kāi)該文件。程序示例《C語(yǔ)言程序設(shè)計(jì)》
49②在while語(yǔ)句中,先調(diào)用gets函數(shù)從鍵盤(pán)輸入一行字符,送到字符數(shù)組s中,若輸入的字符串為空,跳出循環(huán);否則,輸出換行符,接著把此字符串輸出到文件""中。③最后用fclose函數(shù)關(guān)閉文件,把緩沖區(qū)的數(shù)據(jù)輸出到磁盤(pán)文件,釋放文件指針變量。④在例8-2程序執(zhí)行后,""文件的內(nèi)容為“China”。本程序運(yùn)行后,文件的內(nèi)容,有三行:ChinaHowareyou?Iamfine.《C語(yǔ)言程序設(shè)計(jì)》
502、讀字符串函數(shù)fgets它的原型為:int*fgets(char*s,intn,FILE*fp);說(shuō)明:(1)該函數(shù)功能是從文件指針fp所指向的文件中,讀入長(zhǎng)度最多為n-1的字符串,并在字符串的末尾加上串結(jié)束標(biāo)志'\0',然后將字符指針s指向字符串的首地址。同時(shí)將讀寫(xiě)指針向后(下)移動(dòng)實(shí)際讀取的字符串長(zhǎng)度個(gè)字節(jié)。注意,讀入的字符串長(zhǎng)度可能小于等于n-1,因?yàn)楫?dāng)從文件中讀取第n-1個(gè)字符后或讀取數(shù)據(jù)過(guò)程中遇到換行符'\n'后,《C語(yǔ)言程序設(shè)計(jì)》
51函數(shù)就會(huì)返回。如果遇到的是換行符,它也將作為字符串的一部分。(2)如果讀取正常,返回讀取到的字符串的首地址s;如果讀到文件尾或出錯(cuò),則返回NULL。(3)函數(shù)調(diào)用的形式為:fgets(字符串起始地址,n,文件指針);例如:在語(yǔ)句fgets(str,n,fp);中,str用來(lái)存放字符串的起始地址,可以是字符數(shù)組名或指向足夠存儲(chǔ)空間的字符指針?!禖語(yǔ)言程序設(shè)計(jì)》
52【例8-7】從上例生成的文件“”中讀回字符串,并顯示在屏幕上。程序運(yùn)行情況:thecontentofthis:ChinaHowareyou?Iamfine.程序說(shuō)明:程序在運(yùn)行時(shí),在屏幕上按行輸出""文件中的所有字符。因?yàn)樽x入的字符串中已包含'\n',字符串還是分行輸出。程序示例《C語(yǔ)言程序設(shè)計(jì)》
53文件的數(shù)據(jù)塊讀寫(xiě)C語(yǔ)言還提供了用于整塊數(shù)據(jù)的讀寫(xiě)函數(shù)fread和fwrite??捎脕?lái)讀寫(xiě)一組數(shù)據(jù),如一個(gè)數(shù)組元素,一個(gè)結(jié)構(gòu)變量的值等。fread和fwrite一般用于二進(jìn)制文件的輸入輸出。1、寫(xiě)數(shù)據(jù)塊函數(shù)fwrite它的原型為:size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*fp);說(shuō)明:《C語(yǔ)言程序設(shè)計(jì)》
54(1)該函數(shù)功能是將ptr所指向的內(nèi)存中存放的n個(gè)大小為size個(gè)字節(jié)的數(shù)據(jù)項(xiàng)寫(xiě)入到fp所指向的文件中,實(shí)際要寫(xiě)入數(shù)據(jù)的字節(jié)數(shù)是n*size。同時(shí),將讀寫(xiě)指針向后(下)移動(dòng)n*size個(gè)字節(jié)。(2)如果操作成功,則函數(shù)返回值就是讀取的數(shù)據(jù)項(xiàng)的個(gè)數(shù)(不是字節(jié)數(shù)),如果操作出錯(cuò),則返回0。《C語(yǔ)言程序設(shè)計(jì)》
55(3)調(diào)用的一般形式為:fwrite(buffer,size,count,fp);其中buffer是一個(gè)指針,它表示存放輸出數(shù)據(jù)的首地址。size表示數(shù)據(jù)塊的字節(jié)數(shù)。count表示要讀寫(xiě)的數(shù)據(jù)塊塊數(shù)。fp表示文件指針。例如:fwrite(fa,2,5,fp);其意義是把數(shù)組fa的首地址開(kāi)始的數(shù)據(jù),寫(xiě)入到指針fp所指的文件中,每次寫(xiě)2個(gè)字節(jié)(一個(gè)整數(shù)),連續(xù)寫(xiě)5次。《C語(yǔ)言程序設(shè)計(jì)》
56【例8-8】從鍵盤(pán)上輸入一批學(xué)生的數(shù)據(jù)(包括姓名、學(xué)號(hào)、成績(jī)),將它們存放到二進(jìn)制文件“student”中。程序運(yùn)行情況:zhangsan200600190↙Haveanotherrecord(y/n)?y↙lisi200600288↙Haveanotherrecord(y/n)?y↙wangwu200600393↙Haveanotherrecord(y/n)?n↙程序示例《C語(yǔ)言程序設(shè)計(jì)》
57程序說(shuō)明:①先定義結(jié)構(gòu)體數(shù)組stu有40個(gè)元素,每一個(gè)元素用來(lái)存放一位學(xué)生的姓名、學(xué)號(hào)、成績(jī)?nèi)?xiàng)數(shù)據(jù)。②在do…while語(yǔ)句中,首先從鍵盤(pán)輸入的數(shù)據(jù)給數(shù)組元素stu[i],并輸出到文件。其中函數(shù)sizeof(stu[i])用來(lái)計(jì)算出一個(gè)數(shù)據(jù)塊的大小,也可以用sizeof(structstudent)代替,或者寫(xiě)成16(表示一個(gè)student類(lèi)型結(jié)構(gòu)體變量的長(zhǎng)度)。輸完一個(gè)學(xué)生數(shù)據(jù)后,i自增1,接著詢問(wèn)用戶是否有下一個(gè)學(xué)生數(shù)據(jù)?若輸入為'Y'或'y',則繼續(xù)循環(huán),否則結(jié)束循環(huán)。《C語(yǔ)言程序設(shè)計(jì)》
58③程序中第一個(gè)getchar()函數(shù)的作用是接收在執(zhí)行scanf語(yǔ)句時(shí)最后輸入的回車(chē)符,此處不能省略,否則程序只能循環(huán)一次。④注意輸入數(shù)據(jù)的情況,學(xué)生數(shù)據(jù)輸入時(shí)是ASCII碼,也就是文本文件。在送到計(jì)算機(jī)內(nèi)存時(shí),存成二進(jìn)制形式,其中回車(chē)和換行符兩個(gè)符號(hào)轉(zhuǎn)換成一個(gè)換行符。再?gòu)膬?nèi)存以"wb"方式(二進(jìn)制寫(xiě))輸出到文件"student",此時(shí)不需發(fā)生轉(zhuǎn)換,當(dāng)你查看文件"student"內(nèi)容時(shí),發(fā)現(xiàn)里面有一些不能讀懂的字符,這就是與文本文件的區(qū)別。
《C語(yǔ)言程序設(shè)計(jì)》
592、讀數(shù)據(jù)塊函數(shù)它的原型為:size_tfread(void*ptr,size_tsize,size_tn,FILE*fp);說(shuō)明:(1)該函數(shù)功能是從文件指針fp所指向的文件中,讀取n個(gè)數(shù)據(jù)項(xiàng),每個(gè)數(shù)據(jù)項(xiàng)的大小是size個(gè)字節(jié),這些數(shù)據(jù)將被存放到ptr所指向的內(nèi)存中。同時(shí),將讀寫(xiě)指針向后(下)移動(dòng)n*size個(gè)字節(jié)。(2)如果操作成功,則函數(shù)返回值就是讀取的數(shù)據(jù)項(xiàng)的個(gè)數(shù)(不是字節(jié)數(shù)),如果讀到文件尾或出錯(cuò),則返回0?!禖語(yǔ)言程序設(shè)計(jì)》
60(3)調(diào)用的一般形式為:fread(buffer,size,count,fp);其中buffer是一個(gè)指針,它表示存放輸入數(shù)據(jù)的首地址。size表示數(shù)據(jù)塊的字節(jié)數(shù)。count表示要讀寫(xiě)的數(shù)據(jù)塊塊數(shù)。fp表示文件指針。例如:fread(fa,4,5,fp);其意義是從fp所指的文件中,每次讀4個(gè)字節(jié)(一個(gè)實(shí)數(shù))送入實(shí)數(shù)組fa中,連續(xù)讀5次,即讀5個(gè)實(shí)數(shù)到fa中。《C語(yǔ)言程序設(shè)計(jì)》
61【例8-9】從上例生成的二進(jìn)制文件“student”中讀回學(xué)生數(shù)據(jù),并顯示在屏幕上。程序運(yùn)行情況:name:zhangsan num:2006001 score:90name:lisi num:2006002 score:88name:wangwu num:2006003 score:93程序說(shuō)明:①程序中的while語(yǔ)句中將文件"student"中的學(xué)生數(shù)據(jù)逐個(gè)讀出,然后輸出在終端屏幕上。程序示例《C語(yǔ)言程序設(shè)計(jì)》
62函數(shù)fread(&stu[i],sizeof(stu[i]),1,fp)就是讀取一個(gè)學(xué)生的數(shù)據(jù),如果操作成功就返回1,可以繼續(xù)循環(huán),否則,結(jié)束循環(huán)。②注意輸出數(shù)據(jù)的情況,fread函數(shù)從"student"文件向內(nèi)存讀入數(shù)據(jù),該文件是二進(jìn)制文件,且是用"rb"方式(二進(jìn)制讀)打開(kāi)的,因此數(shù)據(jù)按原樣輸入,不發(fā)生字符轉(zhuǎn)換,這時(shí)候內(nèi)存中的數(shù)據(jù)又恢復(fù)到上一程序從鍵盤(pán)輸入數(shù)據(jù)后的情況。從屏幕上顯示的情況來(lái)看,換行符又轉(zhuǎn)換為回車(chē)加換行符。《C語(yǔ)言程序設(shè)計(jì)》
63文件的格式化讀寫(xiě)C語(yǔ)言提供了對(duì)文件進(jìn)行格式化讀寫(xiě)的函數(shù)fscanf和fprinf。二者的功能與我們前面學(xué)習(xí)的格式化輸入、輸出函數(shù)scanf和prinf相似,區(qū)別在于fscanf和fprinf函數(shù)的操作對(duì)象是文件,而scanf和prinf函數(shù)的操作對(duì)象是標(biāo)準(zhǔn)輸入(stdin)、輸出(stdout)文件,即鍵盤(pán)和顯示器。1、fprinf函數(shù)它的原型如下:intfprinf(FILE*fp,constchar*format,…);說(shuō)明:《C語(yǔ)言程序設(shè)計(jì)》
64(1)該函數(shù)功能是將表達(dá)式輸出到fp所指向文件中,如果操作成功,則返回值就是寫(xiě)入到文件中數(shù)據(jù)的字節(jié)個(gè)數(shù);如果操作出錯(cuò),則返回EOF。(2)調(diào)用的一般形式為:fprintf(文件指針,格式字符串,輸出表列);如:fprintf(fp,"%d,%c",a,ch);其意義是將變量a和ch按"%d%c"的格式輸出到fp所指指向文件中。又如:fprintf(stdout,"%6.3f",x);等價(jià)于printf("%6.3f",x);其意義是將變量x按"%6.3f"的格式輸出到終端顯示器上?!禖語(yǔ)言程序設(shè)計(jì)》
652、fscanf函數(shù)它的原型如下:intfscanf(FILE*fp,constchar*format,…);說(shuō)明:(1)該函數(shù)功能是從fp所指向的文件中讀取數(shù)據(jù)。如果操作成功,則函數(shù)返回值就是讀取的數(shù)據(jù)項(xiàng)的個(gè)數(shù);如果操作出錯(cuò)或遇到文件尾,則返回EOF。(2)調(diào)用的一般形式為:fscanf(文件指針,格式字符串,輸入表列);《C語(yǔ)言程序設(shè)計(jì)》
66例如:fscanf(fp,"%d,%c",&a,&ch);其意義是從fp所指向的文件中讀取一個(gè)整型數(shù)據(jù)、逗號(hào)、一個(gè)字符數(shù)據(jù)。其中整型數(shù)據(jù)賦給變量a,字符數(shù)據(jù)賦給變量ch。又如:fscanf(stdin,"%f",x);等價(jià)于scanf("%f",x);其意義是從標(biāo)準(zhǔn)輸入文件(鍵盤(pán))上讀入一個(gè)浮點(diǎn)數(shù)給變量x。使用fscanf和fprinf函數(shù),應(yīng)注意以下幾個(gè)問(wèn)題:(1)fscanf和fprinf函數(shù)適用與文本文件,一般來(lái)講,由fprinf函數(shù)寫(xiě)入磁盤(pán)中的數(shù)據(jù),應(yīng)由fscanf函數(shù)以相同格式從磁盤(pán)文件讀出來(lái)使用?!禖語(yǔ)言程序設(shè)計(jì)》
67例如:例8-8中語(yǔ)句fwrite(&stu[i],sizeof(stu[i]),1,fp);可以用語(yǔ)句fprintf(fp,"%s%ld%d\n",stu[i].name,stu[i].num,stu[i].score);代替;相應(yīng)的例8-9中語(yǔ)句“while(fread(&stu[i],sizeof(stu[i]),1,fp)==1);”可以用語(yǔ)句“while(fscanf(fp,"%s%ld%d\n",stu[i].name,&stu[i].num,&stu[i].score)!=EOF)”代替?!禖語(yǔ)言程序設(shè)計(jì)》
68注意:在fprintf格式串中用空格作為各項(xiàng)之間的分隔符,用換行作為各個(gè)學(xué)生數(shù)據(jù)的分隔符,在fread格式串中也要用空格作為各項(xiàng)之間的分隔符,換行符‘\n’也不能省略,否則讀出的數(shù)據(jù)有誤。(2)用fscanf和fprinf函數(shù)對(duì)磁盤(pán)文件讀寫(xiě),使用方便,容易理解。但由于在輸入是要將ASCII碼轉(zhuǎn)換為二進(jìn)制形式存入內(nèi)存,在寫(xiě)入文件時(shí)又要將二進(jìn)制形式轉(zhuǎn)換為ASCII碼,花費(fèi)時(shí)間較多,而使用fread和fwrite函數(shù)轉(zhuǎn)換就簡(jiǎn)單的多了。《C語(yǔ)言程序設(shè)計(jì)》
69文件的定位前面介紹的對(duì)文件的讀寫(xiě)方式都是順序讀寫(xiě),即讀寫(xiě)文件只能從打開(kāi)位置開(kāi)始,順序讀寫(xiě)各個(gè)數(shù)據(jù)。但在實(shí)際問(wèn)題中常要求只讀寫(xiě)文件中某一指定的部分。為了解決這個(gè)問(wèn)題可移動(dòng)文件內(nèi)部的位置指針到需要讀寫(xiě)的位置,再進(jìn)行讀寫(xiě),這種讀寫(xiě)稱為隨機(jī)讀寫(xiě)。實(shí)現(xiàn)隨機(jī)讀寫(xiě)的關(guān)鍵是要按要求移動(dòng)位置指針,這稱為文件的定位。文件定位移動(dòng)文件內(nèi)部位置指針的函數(shù)主要有兩個(gè),即rewind函數(shù)和fseek函數(shù)。如果想知道文件讀寫(xiě)指針的位置,可以調(diào)用ftell函數(shù)?!禖語(yǔ)言程序設(shè)計(jì)》
701、rewind函數(shù)它的原型如下:voidrewind(FILE*fp);說(shuō)明:(1)該函數(shù)功能是將fp所指向文件的讀寫(xiě)指針重新移動(dòng)到文件的開(kāi)頭,該函數(shù)沒(méi)有返回值。(2)調(diào)用的一般形式為:rewind(文件指針);例如:rewind(fp);《C語(yǔ)言程序設(shè)計(jì)》
712、fseek函數(shù)它的原型如下:intfseek(FILE*fp,longoffset,intwhence);說(shuō)明:(1)該函數(shù)功能是將fp所指文件的讀寫(xiě)指針移動(dòng)到特定位置。這個(gè)特定位置是由參數(shù)offset和whence決定的,即將讀寫(xiě)指針移到距離whence的offset字節(jié)處。whence的值見(jiàn)表8-2。如果offset為正值,表明新的位置在whence的后(下)面,如果offset為負(fù)值,表明新的位置在whence的前(上)面?!禖語(yǔ)言程序設(shè)計(jì)》
72表2-2whence的常量值及含義(2)如果操作成功,返回值為0,否則返回一個(gè)非零值。《C語(yǔ)言程序設(shè)計(jì)》
73(3)調(diào)用的一般形式fseek(文件指針,位移量,起始點(diǎn));“位移量”表示移動(dòng)的字節(jié)數(shù),要求long型數(shù)據(jù),以便在文件長(zhǎng)度大于64KB時(shí)不會(huì)出錯(cuò)。常量表示位移量時(shí),加后綴“L”。例如:fseek(fp,10L,0);把位置指針移到離文件首10個(gè)字節(jié)處。fseek(fp,80L,1);把位置指針移到離當(dāng)前位置80個(gè)字節(jié)處。fseek(fp,-30L,2);將位置指針從文件末尾向前(向上)退30個(gè)字節(jié)?!禖語(yǔ)言程序設(shè)計(jì)》
74(4)利用fseek函數(shù)就可以實(shí)現(xiàn)隨機(jī)讀寫(xiě)了。還要說(shuō)明的是fseek函數(shù)一般用于二進(jìn)制文件。在文本文件中由于要進(jìn)行轉(zhuǎn)換,故往往計(jì)算的位置會(huì)出現(xiàn)錯(cuò)誤。文件的隨機(jī)讀寫(xiě)在移動(dòng)位置指針之后,即可用前面介紹的任一種讀寫(xiě)函數(shù)進(jìn)行讀寫(xiě)。由于一般是讀寫(xiě)一個(gè)數(shù)據(jù)塊,因此常用fread和fwrite函數(shù)。《C語(yǔ)言程序設(shè)計(jì)》
753、ftell函數(shù)它的原型為:longftell(FILE*fp);說(shuō)明:(1)該函數(shù)功能是返回fp所指向文件的讀寫(xiě)指針的值,該值用相對(duì)文件開(kāi)頭的位移量(字節(jié)數(shù))表示,是long型數(shù)據(jù)。如果出錯(cuò),則返回-1L。(2)調(diào)用的一般形式為:ftell(文件指針);例如:x=ftell(fp);注意此處x要定義為long型變量?!禖語(yǔ)言程序設(shè)計(jì)》
76【例8-10】從鍵盤(pán)輸入一個(gè)實(shí)型float數(shù)組a的十個(gè)元素并存放到二進(jìn)制文件"f.dat"中,輸出文件的長(zhǎng)度(字節(jié)數(shù)),然后從文件讀取奇數(shù)位置的五個(gè)數(shù)據(jù)到實(shí)型數(shù)組b中,并在屏幕上輸出數(shù)組b中的所有元素,及元素之和。程序示例《C語(yǔ)言程序設(shè)計(jì)》
77程序運(yùn)行情況:1.22.33.44.55.66.77.88.99.010.1↙thecurrentbytenumber:40afterrewindthecurrentbytenumber:01.2000003.4000005.6000007.8000009.00000027.000000程序說(shuō)明:①本例要求先把數(shù)據(jù)寫(xiě)入文件中,然后從文件中讀取數(shù)據(jù),因此,用fopen函數(shù)的"wb+"二進(jìn)制讀寫(xiě)方式打開(kāi)該文件?!禖語(yǔ)言程序設(shè)計(jì)》
78②語(yǔ)句fwrite(a,4,10,fp);的作用是把數(shù)組a的首地址開(kāi)始的數(shù)據(jù),寫(xiě)入到指針fp所指的文件中,每次寫(xiě)4個(gè)字節(jié)(一個(gè)實(shí)數(shù)),連續(xù)寫(xiě)10次。注意此時(shí)文件讀寫(xiě)指針的位置已經(jīng)向下移動(dòng)了40(4*10)字節(jié),即指向文件末尾,可以從輸出的ftell(fp)的值為40得到驗(yàn)證。③語(yǔ)句rewind(fp);的作用是使讀寫(xiě)指針又指向文件的開(kāi)頭,我們從輸出的ftell(fp)的值為0得到驗(yàn)證。如果遺漏該語(yǔ)句,直接用函數(shù)fread讀取數(shù)據(jù),此時(shí)指針指向文件末尾,讀取的數(shù)據(jù)是沒(méi)有意義的?!禖語(yǔ)言程序設(shè)計(jì)》
79④for循環(huán)執(zhí)行5次,在每一次循環(huán)中,語(yǔ)句fread(&b[i],4,1,fp)的作用是從
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鈍化層光熱轉(zhuǎn)換性能研究考核試卷
- 室內(nèi)游泳池設(shè)計(jì)考核試卷
- 保險(xiǎn)銷(xiāo)售中的心理投射與客戶信任建立分析考核試卷
- 期末模擬綜合試題-2024-2025學(xué)年人教版一年級(jí)數(shù)學(xué)下冊(cè)
- 乳品市場(chǎng)規(guī)模與增長(zhǎng)預(yù)測(cè)考核試卷
- 金屬基復(fù)合材料加工技術(shù)進(jìn)展考核試卷
- 化學(xué)實(shí)驗(yàn)基礎(chǔ)-高考化學(xué)二輪復(fù)習(xí)知識(shí)清單與專項(xiàng)練習(xí)(新高考專用)
- 化學(xué)品的合理使用 基礎(chǔ)檢測(cè)題-人教版高中化學(xué)必修第二冊(cè)
- 橋隧工高級(jí)模擬題(含參考答案解析)
- 期中考前沖刺復(fù)習(xí)之解答題-浙教版七年級(jí)數(shù)學(xué)下冊(cè)考點(diǎn)復(fù)習(xí)
- 16J914-1 公用建筑衛(wèi)生間
- 曠野42站一到十站歸納回顧10
- 《馬克思主義發(fā)展史》第四章馬克思主義發(fā)展的列寧主義階段-第五章馬克思列寧主義在蘇聯(lián)的發(fā)展及曲折課件
- 風(fēng)管系統(tǒng)阻力計(jì)算表
- 《大數(shù)據(jù)時(shí)代下個(gè)人隱私信息保護(hù)問(wèn)題研究報(bào)告》
- 食品安全自身檢查記錄表
- 臨床常見(jiàn)危急值及處理培訓(xùn)課件
- 5-2020年國(guó)家大氣顆粒物組分監(jiān)測(cè)工作方案
- 先心病介入治療技術(shù)醫(yī)療質(zhì)量控制指標(biāo)(2021年版)可編輯版
- 氣瓶檢驗(yàn)站乙炔瓶檢驗(yàn)
- 工藝美術(shù)專業(yè)人才培養(yǎng)方案調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論