




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)第第10章章 文件讀寫文件讀寫C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)教學(xué)提示:教學(xué)提示:存儲在變量和數(shù)組(即內(nèi)存)中的數(shù)據(jù)存儲在變量和數(shù)組(即內(nèi)存)中的數(shù)據(jù)是臨時的,這些數(shù)據(jù)在程序運行結(jié)束后會消失,而是臨時的,這些數(shù)據(jù)在程序運行結(jié)束后會消失,而文件可以用來永久地保存大量的數(shù)據(jù)。如果有些數(shù)文件可以用來永久地保存大量的數(shù)據(jù)。如果有些數(shù)據(jù)需要反復(fù)使用或永久保存,應(yīng)該考慮使用文件來據(jù)需要反復(fù)使用或永久保存,應(yīng)該考慮使用文件來完成。完成。教學(xué)要求:教學(xué)要求:本章要掌握本章要掌握文件在讀寫之前必須打開,文件在讀寫之前必須打開,讀寫結(jié)束必須關(guān)閉。文件可按只讀、只寫、讀寫、讀寫結(jié)束必須關(guān)閉。文件可按
2、只讀、只寫、讀寫、追加四種操作方式打開,同時還必須指定文件的類追加四種操作方式打開,同時還必須指定文件的類型是二進(jìn)制文件還是文本文件。文件可按字節(jié),字型是二進(jìn)制文件還是文本文件。文件可按字節(jié),字符串,數(shù)據(jù)塊為單位讀寫,文件也可按指定的格式符串,數(shù)據(jù)塊為單位讀寫,文件也可按指定的格式進(jìn)行讀寫。文件內(nèi)部的位置指針可指示當(dāng)前的讀寫進(jìn)行讀寫。文件內(nèi)部的位置指針可指示當(dāng)前的讀寫位置,移動該指針可以對文件實現(xiàn)隨機讀寫。位置,移動該指針可以對文件實現(xiàn)隨機讀寫。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.1文件概述與文件指針 所謂所謂“文件文件”是指一組相關(guān)數(shù)據(jù)的有序集合。是指一組相關(guān)數(shù)據(jù)的有序集合。 我們在前幾章中已多
3、次接觸使用過文件,例如我們在前幾章中已多次接觸使用過文件,例如源程序文件、目標(biāo)文件、可執(zhí)行文件、庫文件源程序文件、目標(biāo)文件、可執(zhí)行文件、庫文件 (頭頭文件文件)等。等。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.1.1 文件分類文件通常是駐留在外部介質(zhì)文件通常是駐留在外部介質(zhì)(如磁盤等如磁盤等)上的,在使上的,在使用時才調(diào)入內(nèi)存中來。用時才調(diào)入內(nèi)存中來。C語言把文件看作是由一個語言把文件看作是由一個個字符(字節(jié))的數(shù)據(jù)順序組成的。它把數(shù)據(jù)看作個字符(字節(jié))的數(shù)據(jù)順序組成的。它把數(shù)據(jù)看作是連續(xù)的字符(字節(jié))流,這樣它對文件的存取實是連續(xù)的字符(字節(jié))流,這樣它對文件的存取實際上是以字符(字節(jié))為單位的。輸入
4、輸出的數(shù)據(jù)際上是以字符(字節(jié))為單位的。輸入輸出的數(shù)據(jù)流的開始和結(jié)束只受程序的控制而不受特定符號流的開始和結(jié)束只受程序的控制而不受特定符號(比如回車換行符)的控制。也就是說,(比如回車換行符)的控制。也就是說,C語言在語言在輸出數(shù)據(jù)到文件中時,并不會自動增加回車換行符輸出數(shù)據(jù)到文件中時,并不會自動增加回車換行符以示結(jié)束,在輸入時也不會以讀入回車換行符作為以示結(jié)束,在輸入時也不會以讀入回車換行符作為數(shù)據(jù)的間隔。數(shù)據(jù)的間隔。C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.1.1 文件分類文件分類從用戶的角度看,文件可分為普通文件和設(shè)備文件從用戶的角度看,文件可分為普通文件和設(shè)備文件兩種。兩種。根據(jù)文件的存儲形式,可
5、分為根據(jù)文件的存儲形式,可分為ASCII碼文件和二進(jìn)碼文件和二進(jìn)制文件兩種:制文件兩種: (1) ASCII文件也稱為文本文件,這種文件在磁盤中文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應(yīng)一個字節(jié),用于存放對應(yīng)的存放時每個字符對應(yīng)一個字節(jié),用于存放對應(yīng)的ASCII碼。例如一個整型數(shù)據(jù)碼。例如一個整型數(shù)據(jù)1234在文本文件中占在文本文件中占4個字節(jié)。我們用個字節(jié)。我們用Windows自帶的記事本軟件打開自帶的記事本軟件打開該類型文件能讀懂文件中的內(nèi)容。該類型文件能讀懂文件中的內(nèi)容。 (2) (2) 二進(jìn)制文件是按二進(jìn)制的編碼方式來存放文件二進(jìn)制文件是按二進(jìn)制的編碼方式來存放文件的。例如
6、一個整型數(shù)據(jù)的。例如一個整型數(shù)據(jù)230在二進(jìn)制文件中占在二進(jìn)制文件中占2個字個字節(jié)。節(jié)。C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.1.2 文件類型指針 在語言中要使用文件,必須用一個指針變量指向一個在語言中要使用文件,必須用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進(jìn)行各種操作。指的文件進(jìn)行各種操作。 定義文件指針的一般形式為:定義文件指針的一般形式為:FILE *指針變量標(biāo)識符;指針變量標(biāo)識符; 其中其中FILE必須為大寫,它是在頭文件必須為大寫,它是在頭文件stdio.h中定義的一中定義的一個結(jié)構(gòu)體,該結(jié)構(gòu)體中含有文
7、件名、文件狀態(tài)和文件當(dāng)前個結(jié)構(gòu)體,該結(jié)構(gòu)體中含有文件名、文件狀態(tài)和文件當(dāng)前位置等信息,我們編程時不必關(guān)心位置等信息,我們編程時不必關(guān)心FILE結(jié)構(gòu)的細(xì)節(jié)。結(jié)構(gòu)的細(xì)節(jié)。 例如:例如: FILE *fp;表示定義了一個名為表示定義了一個名為fp的文件指針。的文件指針。如果變量如果變量fp已被正確賦值,則可以根據(jù)結(jié)構(gòu)變量已被正確賦值,則可以根據(jù)結(jié)構(gòu)變量fp所提供的所提供的信息找到一個文件并實施對該文件的操作。習(xí)慣上把信息找到一個文件并實施對該文件的操作。習(xí)慣上把fp稱為稱為指向一個文件的指針。指向一個文件的指針。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.2文件的打開與關(guān)閉 使用文件必須遵循使用文件必須遵循“先
8、打開,再對文件進(jìn)行讀先打開,再對文件進(jìn)行讀寫操作,最后關(guān)閉文件寫操作,最后關(guān)閉文件”的原則。的原則。 在語言中,對文件的這些操作都可以由庫函在語言中,對文件的這些操作都可以由庫函數(shù)來完成,對用到的庫函數(shù)的聲明包含在文件數(shù)來完成,對用到的庫函數(shù)的聲明包含在文件stdio.h中,因此在編程中要操作文件時,要使用頭中,因此在編程中要操作文件時,要使用頭文件包含命令文件包含命令#include “stdio.h”。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.2.1文件的打開 所謂打開文件,實際上是獲得文件的各種有關(guān)所謂打開文件,實際上是獲得文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行下一步信息,并使文件指
9、針指向該文件,以便進(jìn)行下一步操作。操作。C語言提供了函數(shù)語言提供了函數(shù)fopen來打開文件。來打開文件。 其使用格式為:其使用格式為: 文件指針名文件指針名=fopen(文件名文件名, 使用文件方式使用文件方式); 其中,其中,“文件指針名文件指針名”必須是已被說明為必須是已被說明為FILE 類類型的指針變量;型的指針變量;“文件名文件名”是將被打開的文件的文是將被打開的文件的文件名,通常是字符串常量或字符串?dāng)?shù)組(注意路徑件名,通常是字符串常量或字符串?dāng)?shù)組(注意路徑的分隔符應(yīng)使用的分隔符應(yīng)使用“”););“使用文件方式使用文件方式”是指是指文件的類型和操作要求,是一個由一對雙引號括起文件的類型
10、和操作要求,是一個由一對雙引號括起來的字符串,共有來的字符串,共有12種種,具體的符號表示和含義見具體的符號表示和含義見表表10-1。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)文件使用方式文件使用方式含義含義“rt”打開一個已經(jīng)存在的文本文件,只能讀取數(shù)據(jù)“wt”打開一個文本文件,只能寫入數(shù)據(jù)。若文件不存在,則自動建立一個新文件接受寫入的數(shù)據(jù);若文件存在,則刪除文件中原有內(nèi)容,并接受寫入的數(shù)據(jù)(覆蓋)“a”打開一個已經(jīng)存在的文本文件,只能寫入數(shù)據(jù)并且追加在文件的尾部“r+”打開一個已經(jīng)存在的文本文件,可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù)“w+”打開一個文本文件,可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù)。若文件不存在,則自動建立一
11、個新文件接受寫入的數(shù)據(jù);若文件存在,則刪除文件中原有內(nèi)容,并接受寫入的數(shù)據(jù)(覆蓋)“a+”打開一個已經(jīng)存在的文本文件,可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù)(追加在文件的尾部)“rb”打開一個已經(jīng)存在的二進(jìn)制文件,只能讀取數(shù)據(jù)“wb”打開一個二進(jìn)制文件,只能寫入數(shù)據(jù)。若文件不存在,則自動建立一個新文件接受寫入的數(shù)據(jù);若文件存在,則刪除文件中原有內(nèi)容并接受寫入的數(shù)據(jù)(覆蓋)“ab”打開一個已經(jīng)存在的二進(jìn)制文件,只能寫入數(shù)據(jù)(追加在文件的尾部)“rb+”打開一個已經(jīng)存在的二進(jìn)制文件,可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù)“wb+”打開一個二進(jìn)制文件,可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù)。若文件不存在,則自動建立一個新文件接受
12、寫入的數(shù)據(jù);若文件存在,則刪除文件中原有內(nèi)容,并接受寫入的數(shù)據(jù)(覆蓋)“ab+”打開一個已經(jīng)存在的二進(jìn)制文件,可以讀取數(shù)據(jù),也可以寫入數(shù)據(jù)(追加在文件的尾部)C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)fopen打開文件 例如:例如: FILE *fpTa; fpTa=fopen(c:cprogramabc,rb); /*反斜線反斜線“”中的第一個表示轉(zhuǎn)義字符中的第一個表示轉(zhuǎn)義字符*/ 其意義是打開其意義是打開C驅(qū)動器磁盤的驅(qū)動器磁盤的cprogram子目錄下的子目錄下的文件文件abc,這是一個二進(jìn)制文件,只允許按二進(jìn)制這是一個二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。方式進(jìn)行讀操作。又如:又如: FILE *f
13、p; fp= fopen (mytest1.txt,r); 其意義是在當(dāng)前目錄下打開文件其意義是在當(dāng)前目錄下打開文件mytest1.txt,只允只允許進(jìn)行許進(jìn)行“讀讀”操作,并操作,并使使fp指向該文件。指向該文件。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.2.2文件關(guān)閉函數(shù) 在使用完一個文件以后,應(yīng)該將該文件關(guān)閉,在使用完一個文件以后,應(yīng)該將該文件關(guān)閉,以防止它再被調(diào)用或丟失數(shù)據(jù)。以防止它再被調(diào)用或丟失數(shù)據(jù)?!瓣P(guān)閉關(guān)閉”就是使文就是使文件指針變量不再指向該文件,也就是文件指針變量件指針變量不再指向該文件,也就是文件指針變量與該文件與該文件“斷開斷開”,此后不能通過該指針對原來與,此后不能通過該指針對原
14、來與其相聯(lián)系的文件進(jìn)行讀、寫操作(除非再次打開該其相聯(lián)系的文件進(jìn)行讀、寫操作(除非再次打開該文件,使文件指針變量重新指向該文件)。文件,使文件指針變量重新指向該文件)。 fclose()函數(shù)用來關(guān)閉一個已經(jīng)由函數(shù)用來關(guān)閉一個已經(jīng)由fopen()函數(shù)打開函數(shù)打開的文件,正常完成關(guān)閉文件操作時,的文件,正常完成關(guān)閉文件操作時,fclose函數(shù)返函數(shù)返回值為回值為0,有錯誤發(fā)生則返回非零值。,有錯誤發(fā)生則返回非零值。其調(diào)用的一般形式為:其調(diào)用的一般形式為: fclose(文件指針文件指針); 例如:例如: fclose(fp); C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.3 文件位置指針的有關(guān)函數(shù) 在文件內(nèi)部有
15、一個位置指針,用來指向文件的在文件內(nèi)部有一個位置指針,用來指向文件的當(dāng)前讀寫字節(jié)。在文件打開時,該位置指針總是指當(dāng)前讀寫字節(jié)。在文件打開時,該位置指針總是指向文件的第一個字節(jié)。使用下面章節(jié)介紹的向文件的第一個字節(jié)。使用下面章節(jié)介紹的fgetc等等函數(shù)對文件進(jìn)行讀寫后,該位置指針將自動向后移函數(shù)對文件進(jìn)行讀寫后,該位置指針將自動向后移動。動。 但文件指針和文件內(nèi)部的位置指針不是一回事。但文件指針和文件內(nèi)部的位置指針不是一回事。文件指針是指向整個文件的,須在程序中定義說明,文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內(nèi)只要不重新賦值,文件指針的值是不變的
16、。文件內(nèi)部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,每讀寫一次,該指針均自動向后移動,它不需在程每讀寫一次,該指針均自動向后移動,它不需在程序中定義說明,而是由系統(tǒng)自動設(shè)置的。序中定義說明,而是由系統(tǒng)自動設(shè)置的。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)順序讀寫和隨機讀寫文件的讀寫方式分為順序讀寫和隨機讀寫。文件的讀寫方式分為順序讀寫和隨機讀寫。(1) (1) 順序讀寫即讀寫文件只能從頭開始,順序讀寫各個數(shù)據(jù)。順序讀寫即讀寫文件只能從頭開始,順序讀寫各個數(shù)據(jù)。 但在實際問題中常要求只讀寫文件中某一指定的部分,為但在實際問題中常要求只讀寫文件中某一指定的部分,為了解決
17、這個問題可移動文件內(nèi)部的位置指針到需要讀寫的了解決這個問題可移動文件內(nèi)部的位置指針到需要讀寫的位置,再進(jìn)行讀寫,這種讀寫稱為隨機讀寫。位置,再進(jìn)行讀寫,這種讀寫稱為隨機讀寫。 (2) (2) 隨機讀寫可以通過利用系統(tǒng)函數(shù)去主動移動文件內(nèi)部隨機讀寫可以通過利用系統(tǒng)函數(shù)去主動移動文件內(nèi)部的位置指針來實現(xiàn)。這樣的函數(shù)主要有兩個,即的位置指針來實現(xiàn)。這樣的函數(shù)主要有兩個,即 rewind 函函數(shù)和數(shù)和fseek函數(shù)。實現(xiàn)隨機讀寫的關(guān)鍵是要按要求移動位置函數(shù)。實現(xiàn)隨機讀寫的關(guān)鍵是要按要求移動位置指針,這稱為文件的定位。指針,這稱為文件的定位。在移動位置指針之后,即可用在移動位置指針之后,即可用后面介紹的
18、任一種讀寫函數(shù)進(jìn)行讀寫。由于一般是讀寫一后面介紹的任一種讀寫函數(shù)進(jìn)行讀寫。由于一般是讀寫一個數(shù)據(jù)據(jù)塊,因此常用個數(shù)據(jù)據(jù)塊,因此常用fread和和fwrite函數(shù)。函數(shù)。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)rewind函數(shù)rewind函數(shù)的功能是把文件內(nèi)部的位置指針移到函數(shù)的功能是把文件內(nèi)部的位置指針移到文件首。其調(diào)用形式為:文件首。其調(diào)用形式為: rewind(文件指針文件指針);“文件指針文件指針”指向被移動的文件。指向被移動的文件。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)fseek函數(shù)fseek函數(shù)用來移動文件內(nèi)部位置指針,其調(diào)用形式函數(shù)用來移動文件內(nèi)部位置指針,其調(diào)用形式為:為: fseek(文件指針文件指針,
19、位移量位移量,起始點起始點);其中:其中:“文件指針文件指針”指向被移動的文件。指向被移動的文件。 “位移量位移量”表示移動的字節(jié)數(shù),要求位移量是表示移動的字節(jié)數(shù),要求位移量是long型數(shù)據(jù),以便在文件長度大于型數(shù)據(jù),以便在文件長度大于64KB 時不會出時不會出錯。當(dāng)用常量表示位移量時,要求加后綴錯。當(dāng)用常量表示位移量時,要求加后綴“L”。 “起始點起始點”表示從何處開始計算位移量,規(guī)定的表示從何處開始計算位移量,規(guī)定的起始點有三種:文件首,當(dāng)前位置和文件尾。起始點有三種:文件首,當(dāng)前位置和文件尾。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)起始點起始點表示符號表示符號數(shù)字表示數(shù)字表示文件首文件首SEEK_SE
20、T0當(dāng)前位置當(dāng)前位置SEEK_CUR1文件末尾文件末尾SEEK_END2C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)例如:例如:fseek(fp,100L,0); /* 將文件位置指針移到離文將文件位置指針移到離文件頭件頭100個字節(jié)處個字節(jié)處 */fseek(fp,20L,1); /* 將文件位置指針從當(dāng)前位置將文件位置指針從當(dāng)前位置后移后移20個字節(jié)的位置個字節(jié)的位置 */fseek(fp,-10L,SEEK_END); /* 將文件位置指針從文將文件位置指針從文件末尾前移件末尾前移10個字節(jié)的位置個字節(jié)的位置 */ 注意:注意:fseek函數(shù)一般用于二進(jìn)制文件。在文本文函數(shù)一般用于二進(jìn)制文件。在文本文件中由
21、于要進(jìn)行轉(zhuǎn)換,往往計算的位置會出現(xiàn)錯誤。件中由于要進(jìn)行轉(zhuǎn)換,往往計算的位置會出現(xiàn)錯誤。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu) ftell函數(shù)函數(shù): : 用來得到流式文件中的當(dāng)前位置,用用來得到流式文件中的當(dāng)前位置,用相對于文件開頭的位移量來表示。如返回相對于文件開頭的位移量來表示。如返回-1L則表則表示出錯。示出錯。 例如:例如:long a; a=ftell(fp); 文件結(jié)束檢測函數(shù)文件結(jié)束檢測函數(shù)feof函數(shù)函數(shù)feof( )判斷文件是否處于文件結(jié)束位置,如文判斷文件是否處于文件結(jié)束位置,如文件結(jié)束,則返回值為件結(jié)束,則返回值為1,否則為,否則為0。其調(diào)用格式為:其調(diào)用格式為: feof(文件指針文
22、件指針);說明:說明:文件結(jié)束標(biāo)志文件結(jié)束標(biāo)志EOF (每個文件末有一結(jié)束標(biāo)每個文件末有一結(jié)束標(biāo)志志EOF,值為值為-1)只適用于判斷文本文件是否結(jié)束。只適用于判斷文本文件是否結(jié)束。而函數(shù)而函數(shù)feof( )則對文本文件和二進(jìn)制文件都適用。則對文本文件和二進(jìn)制文件都適用。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)10.4讀寫文件 10.4.1字符讀寫函數(shù)字符讀寫函數(shù)fgetc和和fputc 是以字符是以字符(字節(jié)字節(jié))為單位的讀寫函數(shù)。每次可從文件讀出或為單位的讀寫函數(shù)。每次可從文件讀出或向文件寫入一個字符。向文件寫入一個字符。字符輸入字符輸入/ /出函數(shù)所處理的文件可以出函數(shù)所處理的文件可以是文本文件,也可
23、以是二進(jìn)制文件。是文本文件,也可以是二進(jìn)制文件。 10.4.2字符串讀寫函數(shù)字符串讀寫函數(shù)fgets和和fputs 處理的文件一般是文本文件,讀寫的數(shù)據(jù)以字符串為單位。處理的文件一般是文本文件,讀寫的數(shù)據(jù)以字符串為單位。10.4.3數(shù)據(jù)塊讀寫函數(shù)數(shù)據(jù)塊讀寫函數(shù)fread和和fwtrite 用于整塊數(shù)據(jù)的讀寫函數(shù)。可用來讀寫一組數(shù)據(jù),如一用于整塊數(shù)據(jù)的讀寫函數(shù)。可用來讀寫一組數(shù)據(jù),如一個數(shù)組、一個結(jié)構(gòu)變量的值等。個數(shù)組、一個結(jié)構(gòu)變量的值等。10.4.4格式化讀寫函數(shù)格式化讀寫函數(shù)fscanf和和fprintf 與前面使用的與前面使用的scanf和和printf 函數(shù)的功能相似,都是格式函數(shù)的功能
24、相似,都是格式化讀寫函數(shù)。兩者的區(qū)別在于化讀寫函數(shù)。兩者的區(qū)別在于fscanf函數(shù)和函數(shù)和fprintf函數(shù)的讀函數(shù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。寫對象不是鍵盤和顯示器,而是磁盤文件。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)讀字符函數(shù)fgetcfgetc函數(shù)的功能是從指定的文件中讀取一個字符,函數(shù)調(diào)用函數(shù)的功能是從指定的文件中讀取一個字符,函數(shù)調(diào)用的一般形式為:的一般形式為: 字符變量字符變量=fgetc(文件指針文件指針);例如:例如:ch=fgetc(fp); 其意義是從打開的文件其意義是從打開的文件fp中讀取一個字符中讀取一個字符并送入字符變量并送入字符變量ch中。中。對于對于fgetc函
25、數(shù)的使用有以下幾點說明:函數(shù)的使用有以下幾點說明:( (1) 在在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打開的。開的。( (2) 讀取字符的結(jié)果也可以不向字符變量賦值,例如讀取字符的結(jié)果也可以不向字符變量賦值,例如fgetc(fp); 但是讀出的字符不能保存。但是讀出的字符不能保存。 ( (3) 文件內(nèi)部的位置指針在文件打開時總是指向文件的第一文件內(nèi)部的位置指針在文件打開時總是指向文件的第一個字節(jié)。使用個字節(jié)。使用fgetc函數(shù)后,該位置指針將向后移動一個字函數(shù)后,該位置指針將向后移動一個字節(jié)。因此可連續(xù)多次使用節(jié)。因此可連續(xù)多次使用f
26、getc函數(shù)來讀取多個字符。函數(shù)來讀取多個字符。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.1】將】將C盤根目錄下的文本文件盤根目錄下的文本文件test1.txt的內(nèi)容在屏幕上輸出。的內(nèi)容在屏幕上輸出。#includemain() FILE *fp; /* 定義了文件指針定義了文件指針fp */ char ch; if(fp=fopen(c:test1.txt,r)=NULL) /*以讀文本文件方式打開并使以讀文本文件方式打開并使fp指向該文件指向該文件*/ printf(nCannot open file, strike any key to exit!); getchar(); exit(1)
27、; ch=fgetc(fp); /* 先讀出一個字符,然后進(jìn)入循環(huán)先讀出一個字符,然后進(jìn)入循環(huán) */ while(ch!=EOF) /* 判斷文件是否結(jié)束判斷文件是否結(jié)束 */ putchar(ch); /*把該字符顯示在屏幕上把該字符顯示在屏幕上*/ ch=fgetc(fp); /*再讀入下一字符再讀入下一字符 */ fclose(fp); printf(“n”); 本例程序的功能是從文件中逐個讀取字符,并在屏幕上顯示。如打開文件出錯,給出提示并退出程序。只本例程序的功能是從文件中逐個讀取字符,并在屏幕上顯示。如打開文件出錯,給出提示并退出程序。只要讀出的字符不是文件結(jié)束標(biāo)志要讀出的字符不是
28、文件結(jié)束標(biāo)志EOF,就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內(nèi)部的位置指針向后移動一個字符,文件結(jié)束時,該指針指向內(nèi)部的位置指針向后移動一個字符,文件結(jié)束時,該指針指向EOF。執(zhí)行本程序?qū)@示文件執(zhí)行本程序?qū)@示文件c:test1.txt的所有內(nèi)容。的所有內(nèi)容。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)寫字符函數(shù)fputc( ) fputc函數(shù)的功能是把一個字符寫入指定的文件中,函數(shù)的功能是把一個字符寫入指定的文件中,如寫入成功則返回寫入的字符,否則返回一個如寫入成功則返回寫入的字符,否則返回一個EOF,可用此來判斷寫入是否成功??捎么藖砼袛?/p>
29、寫入是否成功。 函數(shù)調(diào)用形式為:函數(shù)調(diào)用形式為: fputc(字符量,文件指針字符量,文件指針); /* 字符量是待寫入的字符常量或變量字符量是待寫入的字符常量或變量 */例如:例如:fputc( x, fp );其意義是把字符其意義是把字符x寫入寫入fp所指向的文件的位置指針的當(dāng)前位置中。每寫入一所指向的文件的位置指針的當(dāng)前位置中。每寫入一個字符,文件內(nèi)部位置指針向后移動一個字節(jié)。個字符,文件內(nèi)部位置指針向后移動一個字節(jié)。 被寫入的文件可以用寫、讀寫、追加方式打開。被寫入的文件可以用寫、讀寫、追加方式打開。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例例10.2】 將從鍵盤上輸入的一些字符(以將從鍵盤上輸入
30、的一些字符(以“*”作為結(jié)束)寫入作為結(jié)束)寫入c盤根目錄下盤根目錄下名為名為test2.txt的文本文件中。的文本文件中。#include stdio.hmain( )FILE *p; char ch; if(p=fopen(c:test2.txt,w)=NULL) printf(File can not open!n); exit(0); printf(Please input,end input with * character:); while(ch=getchar()!=*) fputc(ch,p); fclose(p);printf(Write over!n );程序運行結(jié)束后,可
31、以在程序運行結(jié)束后,可以在c盤根目錄下打開盤根目錄下打開test2.txt查看其內(nèi)容。查看其內(nèi)容。思考一下,如果在寫入完畢后想馬上把剛才輸入的內(nèi)容打印在屏幕上該如何實現(xiàn)?思考一下,如果在寫入完畢后想馬上把剛才輸入的內(nèi)容打印在屏幕上該如何實現(xiàn)? C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)字符串輸入/出函數(shù) 字符串輸入字符串輸入/出函數(shù)所處理的文件一般是文本文件,讀寫的出函數(shù)所處理的文件一般是文本文件,讀寫的數(shù)據(jù)以字符串為單位。數(shù)據(jù)以字符串為單位。1. 讀字符串函數(shù)讀字符串函數(shù)fgets功能是從指定的文件中讀一個字符串到字符數(shù)組中功能是從指定的文件中讀一個字符串到字符數(shù)組中. .函數(shù)調(diào)用的形式為:函數(shù)調(diào)用的形式為:
32、 fgets(字符數(shù)組名字符數(shù)組名, n, 文件指針文件指針);其中其中n是一個正整數(shù)。該函數(shù)表示從文件中讀出是一個正整數(shù)。該函數(shù)表示從文件中讀出n-1個字符個字符(如在讀滿(如在讀滿n-1個字符之前就遇到了換行符或個字符之前就遇到了換行符或EOF,則讀出則讀出提前結(jié)束),并在讀取的最后一個字符后加上串結(jié)束標(biāo)志提前結(jié)束),并在讀取的最后一個字符后加上串結(jié)束標(biāo)志0。fgets函數(shù)的返回值是字符數(shù)組的首地址。讀取字符串函數(shù)的返回值是字符數(shù)組的首地址。讀取字符串后文件位置指針也自動后移若干個位置。后文件位置指針也自動后移若干個位置。例如:例如:fgets(str,n,fp); 意義是從意義是從fp所
33、指的文件中讀出所指的文件中讀出n-1個字符送入字符數(shù)組個字符送入字符數(shù)組str中。中。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.3】從】從test2.txt文件中讀入文件中讀入8個字符組成一個字符串。個字符組成一個字符串。#includemain() FILE *fp; char arr20; if(fp=fopen(c:test2.txt ,r)=NULL) printf(nCannot open file,strike any key exit!); getchar(); exit(1); fgets(arr,9,fp); printf(n%sn,arr); fclose(fp);本例定義了
34、一個字符數(shù)組本例定義了一個字符數(shù)組str共共20個字節(jié),在以讀文本文件方式打開文件個字節(jié),在以讀文本文件方式打開文件string后,從中讀出后,從中讀出8個字符送入個字符送入str數(shù)組,在第數(shù)組,在第9個數(shù)組元素個數(shù)組元素str8內(nèi)加上內(nèi)加上0,然后,然后在屏幕上顯示輸出在屏幕上顯示輸出str數(shù)組存放的字符串。輸出的八個字符正是例數(shù)組存放的字符串。輸出的八個字符正是例10.2的前的前八個字符。八個字符。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)2.寫字符串函數(shù)寫字符串函數(shù)fputsfputs函數(shù)的功能是向指定的文件寫入一個字符串函數(shù)的功能是向指定的文件寫入一個字符串(不寫入字符串結(jié)束標(biāo)記(不寫入字符串結(jié)束標(biāo)記
35、0),當(dāng)成功寫入一個),當(dāng)成功寫入一個字符串后,文件的位置指針會自動后移,函數(shù)返回字符串后,文件的位置指針會自動后移,函數(shù)返回值為值為0;否則,返回;否則,返回EOF(符號常量,其值為符號常量,其值為-1)。)。其調(diào)用形式為:其調(diào)用形式為: fputs( 字符串字符串, 文件指針文件指針 ); 其中字符串可以是字符串常量,也可以是字符數(shù)組名其中字符串可以是字符串常量,也可以是字符數(shù)組名或指針變量。或指針變量。 例如:例如:fputs(“a1b2”, fp) 是把字符串是把字符串“a1b2”寫入寫入fp所指的文件之中。所指的文件之中。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.4】在文件】在文件te
36、st2.txt中追加一個不超過中追加一個不超過20個字符的字符串。個字符的字符串。#includemain() FILE *fp; char ch,st21; int count; if(fp=fopen(c:test2.txt ,a+)=NULL) printf(Cannot open file strike any key exit!); getchar(); exit(1); printf(input a string:n); gets (st); /* 輸入不超過輸入不超過20個字符的字符串暫放入數(shù)組個字符的字符串暫放入數(shù)組st中中 */ fputs(st,fp); rewind(fp
37、); /* 文件內(nèi)部位置指針移到文件的開始位置文件內(nèi)部位置指針移到文件的開始位置 */ printf(“n All of this file is: n”); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); printf(n); fclose(fp); 本例要求在本例要求在test2.txt文件末添加一個字符串,因此,在程序第文件末添加一個字符串,因此,在程序第7行以追加讀寫文本文件的方式打開文件行以追加讀寫文本文件的方式打開文件test2.txt。然后輸入字然后輸入字符串暫放入數(shù)組符串暫放入數(shù)組st中,并用中,并用fputs函數(shù)
38、把該串寫入文件函數(shù)把該串寫入文件test2.txt。后在程序中用后在程序中用rewind函數(shù)把文件內(nèi)部位置指針移到文件首,函數(shù)把文件內(nèi)部位置指針移到文件首,再進(jìn)入循環(huán)逐個顯示當(dāng)前文件中的全部內(nèi)容。要注意用再進(jìn)入循環(huán)逐個顯示當(dāng)前文件中的全部內(nèi)容。要注意用scanf(“%s”,st)和和gets (st)輸入字符串時的不同。輸入字符串時的不同。 思考:如果不用思考:如果不用EOF,而是用而是用feof()來判斷文件結(jié)束,上述陰影部分程序該如何改寫?來判斷文件結(jié)束,上述陰影部分程序該如何改寫? C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)塊讀寫函數(shù)fread和fwtrite 語言還提供了用于整塊數(shù)據(jù)的讀寫函數(shù)??捎?/p>
39、來讀寫語言還提供了用于整塊數(shù)據(jù)的讀寫函數(shù)??捎脕碜x寫一組數(shù)據(jù),如一個數(shù)組、一個結(jié)構(gòu)變量的值等。一組數(shù)據(jù),如一個數(shù)組、一個結(jié)構(gòu)變量的值等。讀數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:讀數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:fread (buffer, size, count, fp);寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:fwrite (buffer, size, count,fp); 其中:其中: size 表示每個數(shù)據(jù)塊的字節(jié)數(shù)。表示每個數(shù)據(jù)塊的字節(jié)數(shù)。 count 表示要讀寫的數(shù)據(jù)塊塊數(shù)。表示要讀寫的數(shù)據(jù)塊塊數(shù)。 fp 表示文件指針。表示文件指針。 buffer 是一個指針。是一個指針。 C
40、語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu) fread (buffer,size,count,fp) 的功能是從的功能是從fp所指向文件的位置所指向文件的位置指針的當(dāng)前位置讀取指針的當(dāng)前位置讀取count塊數(shù)據(jù)(每個數(shù)據(jù)所占的字節(jié)數(shù)塊數(shù)據(jù)(每個數(shù)據(jù)所占的字節(jié)數(shù)為為size),),共組成共組成count塊長度為塊長度為size的數(shù)據(jù)存入的數(shù)據(jù)存入butter所指所指定的內(nèi)存空間中,當(dāng)正確的讀取了定的內(nèi)存空間中,當(dāng)正確的讀取了count塊數(shù)據(jù)后,文件內(nèi)塊數(shù)據(jù)后,文件內(nèi)部指針會自動后移部指針會自動后移count*size個字節(jié)的位置,若數(shù)據(jù)存入正個字節(jié)的位置,若數(shù)據(jù)存入正確,則返回確,則返回count值,否則返回值,否
41、則返回NULL(符號常量,其值為符號常量,其值為0)。)。 例如:例如:fread(fa,4,5,fp); 其意義是從其意義是從fp所指的文件中,每次讀所指的文件中,每次讀4個字節(jié)個字節(jié)(一個實數(shù)一個實數(shù))送入實型數(shù)組送入實型數(shù)組fa中,連續(xù)讀中,連續(xù)讀5次,即讀次,即讀5個實數(shù)到個實數(shù)到fa中。中。 fwrite (buffer,size,count,fp ) 表示將從表示將從buffer起始地址的起始地址的count塊數(shù)據(jù)(每塊數(shù)據(jù)的字節(jié)數(shù)為塊數(shù)據(jù)(每塊數(shù)據(jù)的字節(jié)數(shù)為size)寫入到寫入到fp所指向的所指向的文件中,當(dāng)正確的寫入文件中,當(dāng)正確的寫入count塊數(shù)據(jù)后,文件位置指針會自塊數(shù)據(jù)
42、后,文件位置指針會自動后移動后移count*size個字節(jié)的位置。若數(shù)據(jù)寫入正確,則返回個字節(jié)的位置。若數(shù)據(jù)寫入正確,則返回count值;否則返回值;否則返回NULL(符號常量,其值為符號常量,其值為0)。)。C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.5】 從鍵盤上輸入從鍵盤上輸入10個整數(shù),并把這些整數(shù)寫入個整數(shù),并把這些整數(shù)寫入c:盤根目錄下名為盤根目錄下名為test3.dat的二進(jìn)制文件中。的二進(jìn)制文件中。#include stdio.hmain( )FILE *fp; int data10,i; if(fp=fopen(c:test3.dat,wb)=NULL) printf(File c
43、an not open!n); exit(0); printf(“Input ten integers: ”); for(i=0;i10;i+) scanf(%d, &datai); fwrite(data,sizeof(int),10,fp); fclose(fp);printf(“Write over! n”); C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.6】 從從c:盤根目錄下名為盤根目錄下名為test3.dat的二進(jìn)制文件中讀取的二進(jìn)制文件中讀取10個整數(shù),要求先讀取第個整數(shù),要求先讀取第610個整數(shù),再讀取第個整數(shù),再讀取第15個整數(shù)。并把它們輸出到屏幕上顯示。個整數(shù)。并把它們輸
44、出到屏幕上顯示。#include stdio.hmain( )FILE *fp; int data10,i; if(fp=fopen(c:test3.dat,rb)=NULL) printf(File can not open!n); exit(0); fseek(fp, 5L*sizeof(int) ,0); /*先把文件位置指針后移先把文件位置指針后移*/ fread(data, sizeof(int),5, fp); /*先讀取第先讀取第610個整數(shù)放入個整數(shù)放入data0data4*/rewind(fp); /*把文件位置指針移到文件開始把文件位置指針移到文件開始*/fread(dat
45、a+5, sizeof(int),5, fp); /*再讀取第再讀取第15個整數(shù)放入個整數(shù)放入data5data9*/fclose(fp); for(i=0;i10;i+) printf(%5d,datai); C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.7】從鍵盤輸入三個學(xué)生數(shù)據(jù),寫入一個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏】從鍵盤輸入三個學(xué)生數(shù)據(jù),寫入一個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏幕上。幕上。#includestruct stu char name20; int num; int age; char addr30;boya3,boyb3,*pp,*qq;main() FILE *f
46、p; int i; pp=boya; qq=boyb; if(fp=fopen(c:studata,wb+)=NULL) printf(Cannot open file strike any key exit!); getchar(); exit(1); C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)for(i=0;iname,&pp-num,&pp-age,pp-addr); pp=boya; fwrite(pp,sizeof(struct stu),3,fp); rewind(fp); fread(qq,sizeof(struct stu),3,fp); fclose(fp); printf(n
47、nnametnumber age addrn); for(i=0;iname,qq-num,qq-age,qq-addr); 本例程序定義了一個結(jié)構(gòu)本例程序定義了一個結(jié)構(gòu)stu,說明了兩個結(jié)構(gòu)數(shù)組說明了兩個結(jié)構(gòu)數(shù)組boya和和boyb以及兩個結(jié)構(gòu)指針以及兩個結(jié)構(gòu)指針變量變量pp和和qq。pp指向指向boya,qq指向指向boyb。程序首先以讀寫方式打開二進(jìn)制文程序首先以讀寫方式打開二進(jìn)制文件件“studata”,輸入三個學(xué)生數(shù)據(jù)之后,寫入該文件中。然后把文件內(nèi)部位置輸入三個學(xué)生數(shù)據(jù)之后,寫入該文件中。然后把文件內(nèi)部位置指針移到文件首,讀出三塊學(xué)生數(shù)據(jù)后,在屏幕上顯示。指針移到文件首,讀出三塊學(xué)
48、生數(shù)據(jù)后,在屏幕上顯示。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)格式化讀寫函數(shù)fscanf和fprintf fscanf函數(shù),函數(shù),fprintf函數(shù)與前面使用的函數(shù)與前面使用的scanf和和printf 函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩者的區(qū)別在于者的區(qū)別在于fscanf函數(shù)和函數(shù)和fprintf函數(shù)的讀寫對象函數(shù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。這兩個函數(shù)的不是鍵盤和顯示器,而是磁盤文件。這兩個函數(shù)的調(diào)用格式為:調(diào)用格式為: fscanf(文件指針文件指針,格式字符串格式字符串,輸入表列輸入表列); fprintf(文件指針文件指針,格式字符串格式字符
49、串,輸出表列輸出表列); 例如:例如: fscanf(fp,%d%s,&i,s); fprintf(fp,%d%c,j,ch); 用用fscanf和和fprintf函數(shù)也可以完成例函數(shù)也可以完成例10.7的問題。的問題。修改后的程序如例修改后的程序如例10.8所示。所示。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.8】用】用fscanf和和fprintf函數(shù)解決例函數(shù)解決例10.7的問題。的問題。#includestruct stu char name20; int num; int age; char addr30;boya3,boyb3,*pp,*qq;main( ) FILE *fp
50、;int i;pp=boya;qq=boyb;if(fp=fopen(c:studata,wb+)=NULL)printf(Cant open file strike any key exit!);getch();exit(1);C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)printf(ninput datan);for(i=0;iname,&pp-num,&pp-age,pp-addr);pp=boya;for(i=0;iname,pp-num,pp-age,pp-addr);rewind(fp);for(i=0;iname,&qq-num,&qq-age,qq-addr);pr
51、intf(nnnametnumber age addrn);qq=boyb;for(i=0;iname,qq-num, qq-age,qq-addr);fclose(fp); 本程序中本程序中fscanf和和fprintf函數(shù)每次只能讀寫一個結(jié)構(gòu)體數(shù)組元素,因此采用函數(shù)每次只能讀寫一個結(jié)構(gòu)體數(shù)組元素,因此采用了循環(huán)語句來讀寫全部數(shù)組元素。了循環(huán)語句來讀寫全部數(shù)組元素。 還要注意指針變量還要注意指針變量pp,qq。由于循環(huán)改變了由于循環(huán)改變了它們的值,因此在程序中分別對它們重新賦予了數(shù)組的首地址。它們的值,因此在程序中分別對它們重新賦予了數(shù)組的首地址。 C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)【例【例10.9】
52、 把命令行參數(shù)中的前一個文件名標(biāo)識的文件,復(fù)制到后一個文件名標(biāo)識的文件中,把命令行參數(shù)中的前一個文件名標(biāo)識的文件,復(fù)制到后一個文件名標(biāo)識的文件中, 如命令行中只有一個文件名則把該文件寫到標(biāo)準(zhǔn)輸出文件如命令行中只有一個文件名則把該文件寫到標(biāo)準(zhǔn)輸出文件(顯示器顯示器)中。中。#includemain(int argc,char *argv) FILE *fp1,*fp2; char ch; if(argc=1) /*如命令行參數(shù)中沒有給出文件名,則給出提示信息如命令行參數(shù)中沒有給出文件名,則給出提示信息*/ printf(Have not enter file name, strike any k
53、ey exit); getchar(); exit(0); if(fp1=fopen(argv1,rt)=NULL) printf(Cannot open %sn,argv1); getchar(); exit(1); .C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)if(argc=2) /*如果只給出一個文件名,則使如果只給出一個文件名,則使fp2指向標(biāo)準(zhǔn)輸出文件指向標(biāo)準(zhǔn)輸出文件(即顯示器即顯示器)*/fp2=stdout; else if(fp2=fopen(argv2,wt+)=NULL) printf(Cannot open %sn,argv1); getchar(); exit(1); while(ch=
54、fgetc(fp1)!=EOF) /*用循環(huán)語句逐個讀出文件用循環(huán)語句逐個讀出文件1中的字符再送到文件中的字符再送到文件2中中*/ fputc(ch,fp2); fclose(fp1); fclose(fp2); 本程序為帶參數(shù)的本程序為帶參數(shù)的main函數(shù)。程序中定義了兩個文件指針函數(shù)。程序中定義了兩個文件指針fp1和和fp2,分別指向命令行參分別指向命令行參數(shù)中給出的文件。如命令行參數(shù)中沒有給出文件名,則給出提示信息。如果只給出一個數(shù)中給出的文件。如命令行參數(shù)中沒有給出文件名,則給出提示信息。如果只給出一個文件名,則使文件名,則使fp2指向標(biāo)準(zhǔn)輸出文件指向標(biāo)準(zhǔn)輸出文件(即顯示器即顯示器)。
55、然后用循環(huán)語句逐個讀出文件。然后用循環(huán)語句逐個讀出文件1中的字符中的字符再送到文件再送到文件2中。假設(shè)項目名稱為中。假設(shè)項目名稱為cexam1_1,則生成一個可執(zhí)行文件則生成一個可執(zhí)行文件cexam1_1.exe。在在DOS下運行結(jié)果如圖所示:下運行結(jié)果如圖所示: C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)第一次運行第一次運行, 不指定文件名,系統(tǒng)提示不指定文件名,系統(tǒng)提示have not enter file name, strike any key exit。再次運行時,給出了一個文件名再次運行時,給出了一個文件名test1.txt,故輸出給標(biāo)準(zhǔn)輸出文件故輸出給標(biāo)準(zhǔn)輸出文件stdout,即在顯示器上顯示文件即在顯示器上顯示文件test1.txt的內(nèi)容的內(nèi)容“1234”。第三次運行,給出了二個文件名,因此把第三次運行,給出了二
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江司法警官職業(yè)學(xué)院《大學(xué)生職業(yè)生涯規(guī)劃》2023-2024學(xué)年第二學(xué)期期末試卷
- 人教版七年級歷史下學(xué)期第三單元明清時期至鴉片戰(zhàn)爭前統(tǒng)一多民族封建國家的鞏固與發(fā)展第6課時明清時期社會經(jīng)濟的發(fā)展測試試題(含答案)
- 莊子《齊物論》講了什么
- 2025年呼吸科主治考試題及答案
- 2025年測驗情商的測試題及答案
- 2025年京東運營考試試題及答案
- 2025年招商總監(jiān)的面試題及答案
- 中級工業(yè)機器人復(fù)習(xí)測試卷含答案
- 2025年廊坊駕照筆試題庫及答案
- 2025年經(jīng)濟金融筆試題庫及答案
- 銀行業(yè)務(wù)技能比賽方案范文(2篇)
- 寧波城建投資集團有限公司招聘筆試沖刺題2025
- 金融安全進(jìn)校園
- 小學(xué)生森林防火課課件
- 人教版九年級歷史復(fù)習(xí) 專題04 資本主義制度的初步確立(考點串講)
- QC/T 1210-2024汽車防夾系統(tǒng)
- 初級建(構(gòu))筑物消防員理論考試真題與答案
- 特種設(shè)備安全日管控-周排查-月調(diào)度制度-
- 司馬遷與《史記·管晏列傳》
- 撬裝大件設(shè)備吊裝方案
- 口腔診所信息管理制度
評論
0/150
提交評論