C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)-第章ppt課件_第1頁
C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)-第章ppt課件_第2頁
C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)-第章ppt課件_第3頁
C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)-第章ppt課件_第4頁
C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)-第章ppt課件_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第10章章 文件讀寫文件讀寫教學(xué)提示:存儲在變量和數(shù)組即內(nèi)存中的數(shù)據(jù)教學(xué)提示:存儲在變量和數(shù)組即內(nèi)存中的數(shù)據(jù)是臨時的,這些數(shù)據(jù)在程序運(yùn)行結(jié)束后會消失,而是臨時的,這些數(shù)據(jù)在程序運(yùn)行結(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)前的讀寫位置,移動該指針可以對文件實(shí)現(xiàn)隨機(jī)讀寫。位置,移動該指針可以對文件實(shí)現(xiàn)隨機(jī)讀寫。 10.1文件概述與文件指針 所謂所謂“文件是指一組相關(guān)數(shù)據(jù)的有序集合。文件是指一組相關(guān)數(shù)據(jù)的有序集合。 我們在前幾章中已多次接觸使用過文件,例如我們在前幾章中已多次接觸使用過文件,例如源程序文件、目標(biāo)文件

3、、可執(zhí)行文件、庫文件源程序文件、目標(biāo)文件、可執(zhí)行文件、庫文件 (頭頭文件文件)等。等。 10.1.1 文件分類文件通常是駐留在外部介質(zhì)文件通常是駐留在外部介質(zhì)( (如磁盤等如磁盤等) )上的,在使上的,在使用時才調(diào)入內(nèi)存中來。用時才調(diào)入內(nèi)存中來。C C語言把文件看作是由一個語言把文件看作是由一個個字符字節(jié)的數(shù)據(jù)順序組成的。它把數(shù)據(jù)看作個字符字節(jié)的數(shù)據(jù)順序組成的。它把數(shù)據(jù)看作是連續(xù)的字符字節(jié)流,這樣它對文件的存取實(shí)是連續(xù)的字符字節(jié)流,這樣它對文件的存取實(shí)際上是以字符字節(jié)為單位的。輸入輸出的數(shù)據(jù)際上是以字符字節(jié)為單位的。輸入輸出的數(shù)據(jù)流的開始和結(jié)束只受程序的控制而不受特定符號流的開始和結(jié)束只受程序

4、的控制而不受特定符號比如回車換行符的控制。也就是說,比如回車換行符的控制。也就是說,C C語言在語言在輸出數(shù)據(jù)到文件中時,并不會自動增加回車換行符輸出數(shù)據(jù)到文件中時,并不會自動增加回車換行符以示結(jié)束,在輸入時也不會以讀入回車換行符作為以示結(jié)束,在輸入時也不會以讀入回車換行符作為數(shù)據(jù)的間隔。數(shù)據(jù)的間隔。10.1.1 文件分類文件分類從用戶的角度看,文件可分為普通文件和設(shè)備文件從用戶的角度看,文件可分為普通文件和設(shè)備文件兩種。兩種。根據(jù)文件的存儲形式,可分為根據(jù)文件的存儲形式,可分為ASCIIASCII碼文件和二進(jìn)碼文件和二進(jìn)制文件兩種:制文件兩種: (1) ASCII (1) ASCII文件也稱

5、為文本文件,這種文件在磁盤文件也稱為文本文件,這種文件在磁盤中存放時每個字符對應(yīng)一個字節(jié),用于存放對應(yīng)的中存放時每個字符對應(yīng)一個字節(jié),用于存放對應(yīng)的ASCIIASCII碼。例如一個整型數(shù)據(jù)碼。例如一個整型數(shù)據(jù)12341234在文本文件中占在文本文件中占4 4個字節(jié)。我們用個字節(jié)。我們用WindowsWindows自帶的記事本軟件打開該自帶的記事本軟件打開該類型文件能讀懂文件中的內(nèi)容。類型文件能讀懂文件中的內(nèi)容。 (2) (2) 二進(jìn)制文件是按二進(jìn)制的編碼方式來存放文二進(jìn)制文件是按二進(jìn)制的編碼方式來存放文件的。例如一個整型數(shù)據(jù)件的。例如一個整型數(shù)據(jù)230230在二進(jìn)制文件中占在二進(jìn)制文件中占2

6、2個個字節(jié)。字節(jié)。10.1.2 文件類型指針 在語言中要使用文件,必須用一個指針變量指向一個在語言中要使用文件,必須用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進(jìn)行各種操作。指的文件進(jìn)行各種操作。 定義文件指針的一般形式為:定義文件指針的一般形式為:FILE FILE * *指針變量標(biāo)識符;指針變量標(biāo)識符; 其中其中FILEFILE必須為大寫,它是在頭文件必須為大寫,它是在頭文件stdio.hstdio.h中定義的一中定義的一個結(jié)構(gòu)體,該結(jié)構(gòu)體中含有文件名、文件狀態(tài)和文件當(dāng)前個結(jié)構(gòu)體,該結(jié)構(gòu)體中含有文件名、文

7、件狀態(tài)和文件當(dāng)前位置等信息,我們編程時不必關(guān)心位置等信息,我們編程時不必關(guān)心FILEFILE結(jié)構(gòu)的細(xì)節(jié)。結(jié)構(gòu)的細(xì)節(jié)。 例如:例如: FILE FILE * *fpfp;表示定義了一個名為;表示定義了一個名為fpfp的文件指的文件指針。如果變量針。如果變量fpfp已被正確賦值,則可以根據(jù)結(jié)構(gòu)變量已被正確賦值,則可以根據(jù)結(jié)構(gòu)變量fpfp所所提供的信息找到一個文件并實(shí)施對該文件的操作。習(xí)慣上提供的信息找到一個文件并實(shí)施對該文件的操作。習(xí)慣上把把fpfp稱為指向一個文件的指針。稱為指向一個文件的指針。 10.2文件的打開與關(guān)閉 使用文件必須遵循使用文件必須遵循“先打開,再對文件進(jìn)行讀先打開,再對文件進(jìn)

8、行讀寫操作,最后關(guān)閉文件的原則。寫操作,最后關(guān)閉文件的原則。 在語言中,對文件的這些操作都可以由庫函在語言中,對文件的這些操作都可以由庫函數(shù)來完成,對用到的庫函數(shù)的聲明包含在文件數(shù)來完成,對用到的庫函數(shù)的聲明包含在文件stdio.hstdio.h中,因此在編程中要操作文件時,要使用中,因此在編程中要操作文件時,要使用頭文件包含命令頭文件包含命令#include “stdio.h”#include “stdio.h”。 10.2.1文件的打開 所謂打開文件,實(shí)際上是獲得文件的各種有關(guān)所謂打開文件,實(shí)際上是獲得文件的各種有關(guān)信息,并使文件指針指向該文件,以便進(jìn)行下一步信息,并使文件指針指向該文件,

9、以便進(jìn)行下一步操作。操作。C C語言提供了函數(shù)語言提供了函數(shù)fopenfopen來打開文件。來打開文件。 其使用格式為:其使用格式為: 文件指針名文件指針名=fopen(=fopen(文件名文件名, , 使用文件方式使用文件方式);); 其中,其中,“文件指針名必須是已被說明為文件指針名必須是已被說明為FILE FILE 類類型的指針變量;型的指針變量;“文件名是將被打開的文件的文文件名是將被打開的文件的文件名,通常是字符串常量或字符串?dāng)?shù)組注意路徑件名,通常是字符串常量或字符串?dāng)?shù)組注意路徑的分隔符應(yīng)使用的分隔符應(yīng)使用“”“”););“使用文件方式是指使用文件方式是指文件的類型和操作要求,是一個

10、由一對雙引號括起文件的類型和操作要求,是一個由一對雙引號括起來的字符串,共有來的字符串,共有1212種種, ,具體的符號表示和含義見具體的符號表示和含義見表表10-110-1。 文件使用方式文件使用方式含義含義“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ù)追加在文件的尾部)fopen打開文件 例如:例如: FILE FILE * *fpTafpTa; fpTa=fopen(c:cprogramabc,rb)fpTa=fopen(c:cprogramabc,rb); / /* *反斜線反斜線“”“”中的第一個表示轉(zhuǎn)義字符中的第一個表示轉(zhuǎn)義字符* */ / 其意義是打開其意義是打開C C驅(qū)動器磁盤的驅(qū)動器磁盤的cprogramcprogram子目錄下的子目錄下的文件文件abcabc,這是一個二進(jìn)制文件,只允

13、許按二進(jìn)制,這是一個二進(jìn)制文件,只允許按二進(jìn)制方式進(jìn)行讀操作。方式進(jìn)行讀操作。又如:又如: FILE FILE * *fpfp; fp= fopen (mytest1.txt,r); fp= fopen (mytest1.txt,r); 其意義是在當(dāng)前目錄下打開文件其意義是在當(dāng)前目錄下打開文件mytest1.txtmytest1.txt,只,只允許進(jìn)行允許進(jìn)行“讀操作,并使讀操作,并使fpfp指向該文件。指向該文件。 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() fclose()函數(shù)用來關(guān)閉一個已經(jīng)由函數(shù)用來關(guān)閉一個已經(jīng)由fopen()fopen()函數(shù)函數(shù)打開的文件,正常完成關(guān)閉文件操作時,打開的文件,正常完成關(guān)閉文件操作時,fclosefclose函函數(shù)返回值為數(shù)返回值為0 0,有錯誤發(fā)生則返

15、回非零值。,有錯誤發(fā)生則返回非零值。其調(diào)用的一般形式為:其調(diào)用的一般形式為: fclose( fclose(文件指針文件指針) ); 例如:例如: fclose(fp); fclose(fp); 10.3 文件位置指針的有關(guān)函數(shù) 在文件內(nèi)部有一個位置指針,用來指向文件的在文件內(nèi)部有一個位置指針,用來指向文件的當(dāng)前讀寫字節(jié)。在文件打開時,該位置指針總是指當(dāng)前讀寫字節(jié)。在文件打開時,該位置指針總是指向文件的第一個字節(jié)。使用下面章節(jié)介紹的向文件的第一個字節(jié)。使用下面章節(jié)介紹的fgetcfgetc等函數(shù)對文件進(jìn)行讀寫后,該位置指針將自動向后等函數(shù)對文件進(jìn)行讀寫后,該位置指針將自動向后移動。移動。 但文

16、件指針和文件內(nèi)部的位置指針不是一回事。但文件指針和文件內(nèi)部的位置指針不是一回事。文件指針是指向整個文件的,須在程序中定義說明,文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內(nèi)只要不重新賦值,文件指針的值是不變的。文件內(nèi)部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,部的位置指針用以指示文件內(nèi)部的當(dāng)前讀寫位置,每讀寫一次,該指針均自動向后移動,它不需在程每讀寫一次,該指針均自動向后移動,它不需在程序中定義說明,而是由系統(tǒng)自動設(shè)置的。序中定義說明,而是由系統(tǒng)自動設(shè)置的。 順序讀寫和隨機(jī)讀寫文件的讀寫方式分為順序讀寫和隨機(jī)讀寫。文件的讀寫方式分為順序讀寫和隨機(jī)讀

17、寫。(1) (1) 順序讀寫即讀寫文件只能從頭開始,順序讀寫各個數(shù)據(jù)。順序讀寫即讀寫文件只能從頭開始,順序讀寫各個數(shù)據(jù)。 但在實(shí)際問題中常要求只讀寫文件中某一指定的部分,為但在實(shí)際問題中常要求只讀寫文件中某一指定的部分,為了解決這個問題可移動文件內(nèi)部的位置指針到需要讀寫的了解決這個問題可移動文件內(nèi)部的位置指針到需要讀寫的位置,再進(jìn)行讀寫,這種讀寫稱為隨機(jī)讀寫。位置,再進(jìn)行讀寫,這種讀寫稱為隨機(jī)讀寫。 (2) (2) 隨機(jī)讀寫可以通過利用系統(tǒng)函數(shù)去主動移動文件內(nèi)部隨機(jī)讀寫可以通過利用系統(tǒng)函數(shù)去主動移動文件內(nèi)部的位置指針來實(shí)現(xiàn)。這樣的函數(shù)主要有兩個,即的位置指針來實(shí)現(xiàn)。這樣的函數(shù)主要有兩個,即 r

18、ewind rewind 函數(shù)和函數(shù)和fseekfseek函數(shù)。實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵是要按要求移動位函數(shù)。實(shí)現(xiàn)隨機(jī)讀寫的關(guān)鍵是要按要求移動位置指針,這稱為文件的定位。在移動位置指針之后,即可置指針,這稱為文件的定位。在移動位置指針之后,即可用后面介紹的任一種讀寫函數(shù)進(jìn)行讀寫。由于一般是讀寫用后面介紹的任一種讀寫函數(shù)進(jìn)行讀寫。由于一般是讀寫一個數(shù)據(jù)據(jù)塊,因此常用一個數(shù)據(jù)據(jù)塊,因此常用freadfread和和fwritefwrite函數(shù)。函數(shù)。 rewind函數(shù)rewind函數(shù)的功能是把文件內(nèi)部的位置指針移到函數(shù)的功能是把文件內(nèi)部的位置指針移到文件首。其調(diào)用形式為:文件首。其調(diào)用形式為: rewin

19、d(文件指針文件指針);“文件指針指向被移動的文件。文件指針指向被移動的文件。 fseek函數(shù)fseek函數(shù)用來移動文件內(nèi)部位置指針,其調(diào)用形式函數(shù)用來移動文件內(nèi)部位置指針,其調(diào)用形式為:為: fseek(文件指針文件指針,位移量位移量,起始點(diǎn)起始點(diǎn));其中:其中:“文件指針指向被移動的文件。文件指針指向被移動的文件。 “位移量表示移動的字節(jié)數(shù),要求位移量是位移量表示移動的字節(jié)數(shù),要求位移量是long型數(shù)據(jù),以便在文件長度大于型數(shù)據(jù),以便在文件長度大于64KB 時不會出錯。時不會出錯。當(dāng)用常量表示位移量時,要求加后綴當(dāng)用常量表示位移量時,要求加后綴“L”。 “起始點(diǎn)表示從何處開始計算位移量,規(guī)

20、定的起起始點(diǎn)表示從何處開始計算位移量,規(guī)定的起始點(diǎn)有三種:文件首,當(dāng)前位置和文件尾。始點(diǎn)有三種:文件首,當(dāng)前位置和文件尾。 起始點(diǎn)起始點(diǎn)表示符號表示符號數(shù)字表示數(shù)字表示文件首文件首SEEK_SET0當(dāng)前位置當(dāng)前位置SEEK_CUR1文件末尾文件末尾SEEK_END2例如:例如:fseek(fp,100L,0); /fseek(fp,100L,0); /* * 將文件位置指將文件位置指針移到離文件頭針移到離文件頭100100個字節(jié)處個字節(jié)處 * */ /fseek(fp,20L,1); /fseek(fp,20L,1); /* * 將文件位置指針將文件位置指針從當(dāng)前位置后移從當(dāng)前位置后移2020

21、個字節(jié)的位置個字節(jié)的位置 * */ /fseek(fp,-10L,SEEK_END); /fseek(fp,-10L,SEEK_END); /* * 將文件位置指針從將文件位置指針從文件末尾前移文件末尾前移1010個字節(jié)的位置個字節(jié)的位置 * */ / 注意:注意:fseekfseek函數(shù)一般用于二進(jìn)制文件。在文本文函數(shù)一般用于二進(jìn)制文件。在文本文件中由于要進(jìn)行轉(zhuǎn)換,往往計算的位置會出現(xiàn)錯誤。件中由于要進(jìn)行轉(zhuǎn)換,往往計算的位置會出現(xiàn)錯誤。 ftell函數(shù)函數(shù): 用來得到流式文件中的當(dāng)前位置,用用來得到流式文件中的當(dāng)前位置,用相對于文件開頭的位移量來表示。如返回相對于文件開頭的位移量來表示。如返

22、回-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(文件指針文件指針);說明:文件結(jié)束標(biāo)志說明:文件結(jié)束標(biāo)志EOF (每個文件末有一結(jié)束標(biāo)每個文件末有一結(jié)束標(biāo)志志EOF,值為,值為-1)只適用于判斷文本文件是否結(jié)束。只適用于判斷文本文件是否結(jié)束。而函數(shù)而函數(shù)feof( )則對文本文件和二進(jìn)制文件都適用。則對文本文件和二進(jìn)制文件都適用。

23、 10.4讀寫文件 10.4.1字符讀寫函數(shù)字符讀寫函數(shù)fgetc和和fputc 是以字符是以字符(字節(jié)字節(jié))為單位的讀寫函數(shù)。每次可從文件讀出或向?yàn)閱挝坏淖x寫函數(shù)。每次可從文件讀出或向文件寫入一個字符。字符輸入文件寫入一個字符。字符輸入/出函數(shù)所處理的文件可以是出函數(shù)所處理的文件可以是文本文件,也可以是二進(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ù)

24、據(jù)的讀寫函數(shù)??捎脕碜x寫一組數(shù)據(jù),如一個用于整塊數(shù)據(jù)的讀寫函數(shù)??捎脕碜x寫一組數(shù)據(jù),如一個數(shù)組、一個結(jié)構(gòu)變量的值等。數(shù)組、一個結(jié)構(gòu)變量的值等。10.4.4格式化讀寫函數(shù)格式化讀寫函數(shù)fscanf和和fprintf 與前面使用的與前面使用的scanf和和printf 函數(shù)的功能相似,都是格式化函數(shù)的功能相似,都是格式化讀寫函數(shù)。兩者的區(qū)別在于讀寫函數(shù)。兩者的區(qū)別在于fscanf函數(shù)和函數(shù)和fprintf函數(shù)的讀寫函數(shù)的讀寫對象不是鍵盤和顯示器,而是磁盤文件。對象不是鍵盤和顯示器,而是磁盤文件。 讀字符函數(shù)fgetcfgetc函數(shù)的功能是從指定的文件中讀取一個字符,函數(shù)調(diào)用函數(shù)的功能是從指定的文件

25、中讀取一個字符,函數(shù)調(diào)用的一般形式為:的一般形式為: 字符變量字符變量=fgetc(文件指針文件指針);例如:例如:ch=fgetc(fp); 其意義是從打開的文件其意義是從打開的文件fp中讀取一個字符中讀取一個字符并送入字符變量并送入字符變量ch中。中。對于對于fgetc函數(shù)的使用有以下幾點(diǎn)說明:函數(shù)的使用有以下幾點(diǎn)說明:(1) 在在fgetc函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打函數(shù)調(diào)用中,讀取的文件必須是以讀或讀寫方式打開的。開的。(2) 讀取字符的結(jié)果也可以不向字符變量賦值,例如讀取字符的結(jié)果也可以不向字符變量賦值,例如fgetc(fp); 但是讀出的字符不能保存。但是讀出的字符

26、不能保存。 (3) 文件內(nèi)部的位置指針在文件打開時總是指向文件的第一文件內(nèi)部的位置指針在文件打開時總是指向文件的第一個字節(jié)。使用個字節(jié)。使用fgetc函數(shù)后,該位置指針將向后移動一個字函數(shù)后,該位置指針將向后移動一個字節(jié)。因此可連續(xù)多次使用節(jié)。因此可連續(xù)多次使用fgetc函數(shù)來讀取多個字符。函數(shù)來讀取多個字符。 【例【例10.110.1】將】將C C盤根目錄下的文本文件盤根目錄下的文本文件test1.txttest1.txt的內(nèi)容在屏幕上輸出。的內(nèi)容在屏幕上輸出。#include#includemain()main() FILE FILE * *fp; /fp; /* * 定義了文件指針定義了

27、文件指針fp fp * */ / char ch; char ch; if(fp=fopen(c:test1.txt,r)=NULL) / if(fp=fopen(c:test1.txt,r)=NULL) /* *以讀文本文件方式打開并使以讀文本文件方式打開并使fpfp指向該文件指向該文件* */ / printf(nCannot open file, strike any key to exit!); printf(nCannot open file, strike any key to exit!); getchar(); getchar(); exit(1); exit(1); ch=f

28、getc(fp); / ch=fgetc(fp); /* * 先讀出一個字符,然后進(jìn)入循環(huán)先讀出一個字符,然后進(jìn)入循環(huán) * */ / while(ch!=EOF) / while(ch!=EOF) /* * 判斷文件是否結(jié)束判斷文件是否結(jié)束 * */ / putchar(ch); / putchar(ch); /* *把該字符顯示在屏幕上把該字符顯示在屏幕上* */ / ch=fgetc(fp); / ch=fgetc(fp); /* *再讀入下一字符再讀入下一字符 * */ / fclose(fp); fclose(fp); printf(“n”); printf(“n”); 本例程序的功能

29、是從文件中逐個讀取字符,并在屏幕上顯示。如打開文件出錯,給出提示并退出程序。只本例程序的功能是從文件中逐個讀取字符,并在屏幕上顯示。如打開文件出錯,給出提示并退出程序。只要讀出的字符不是文件結(jié)束標(biāo)志要讀出的字符不是文件結(jié)束標(biāo)志EOFEOF,就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內(nèi),就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內(nèi)部的位置指針向后移動一個字符,文件結(jié)束時,該指針指向部的位置指針向后移動一個字符,文件結(jié)束時,該指針指向EOFEOF。執(zhí)行本程序?qū)@示文件。執(zhí)行本程序?qū)@示文件c:test1.txtc:test1.txt的所有內(nèi)容。的所有內(nèi)容。 寫字符函數(shù)fpu

30、tc( ) fputc函數(shù)的功能是把一個字符寫入指定的文件中,函數(shù)的功能是把一個字符寫入指定的文件中,如寫入成功則返回寫入的字符,否則返回一個如寫入成功則返回寫入的字符,否則返回一個EOF,可用此來判斷寫入是否成功。可用此來判斷寫入是否成功。 函數(shù)調(diào)用形式為:函數(shù)調(diào)用形式為: fputc(字符量,文件指針字符量,文件指針); /* 字符量是待寫入的字符常量或變量字符量是待寫入的字符常量或變量 */例如:例如:fputc( x, fp );其意義是把字符其意義是把字符x寫入寫入fp所所指向的文件的位置指針的當(dāng)前位置中。每寫入一個指向的文件的位置指針的當(dāng)前位置中。每寫入一個字符,文件內(nèi)部位置指針向

31、后移動一個字節(jié)。字符,文件內(nèi)部位置指針向后移動一個字節(jié)。 被寫入的文件可以用寫、讀寫、追加方式打開。被寫入的文件可以用寫、讀寫、追加方式打開。 【例【例10.210.2】 將從鍵盤上輸入的一些字符以將從鍵盤上輸入的一些字符以“* *”作為結(jié)束寫入作為結(jié)束寫入c c盤根目錄下盤根目錄下名為名為test2.txttest2.txt的文本文件中。的文本文件中。#include stdio.h#include stdio.hmain( )main( ) FILE FILE * *p;p; char ch;char ch; if(p=fopen(c:test2.txt,w)=NULL)if(p=fope

32、n(c:test2.txt,w)=NULL) printf(File can not open!n);printf(File can not open!n); exit(0);exit(0); printf(Please input,end input with printf(Please input,end input with * * character:); character:); while(ch=getchar()!=while(ch=getchar()!=* *) fputc(ch,p);fputc(ch,p); fclose(p);fclose(p);printf(Write

33、over!n );printf(Write over!n ); 程序運(yùn)行結(jié)束后,可以在程序運(yùn)行結(jié)束后,可以在c c盤根目錄下打開盤根目錄下打開test2.txttest2.txt查看其內(nèi)容。查看其內(nèi)容。思考一下,如果在寫入完畢后想馬上把剛才輸入的內(nèi)容打印在屏幕上該如何實(shí)現(xiàn)?思考一下,如果在寫入完畢后想馬上把剛才輸入的內(nèi)容打印在屏幕上該如何實(shí)現(xiàn)? 字符串輸入/出函數(shù) 字符串輸入字符串輸入/ /出函數(shù)所處理的文件一般是文本文件,讀寫出函數(shù)所處理的文件一般是文本文件,讀寫的數(shù)據(jù)以字符串為單位。的數(shù)據(jù)以字符串為單位。1.1.讀字符串函數(shù)讀字符串函數(shù)fgetsfgets功能是從指定的文件中讀一個字符串到

34、字符數(shù)組中功能是從指定的文件中讀一個字符串到字符數(shù)組中. .函數(shù)調(diào)用的形式為:函數(shù)調(diào)用的形式為: fgets( fgets(字符數(shù)組名字符數(shù)組名, n, , n, 文件指針文件指針););其中其中n n是一個正整數(shù)。該函數(shù)表示從文件中讀出是一個正整數(shù)。該函數(shù)表示從文件中讀出n-1n-1個字符個字符如在讀滿如在讀滿n-1n-1個字符之前就遇到了換行符或個字符之前就遇到了換行符或EOFEOF,則讀出,則讀出提前結(jié)束),并在讀取的最后一個字符后加上串結(jié)束標(biāo)志提前結(jié)束),并在讀取的最后一個字符后加上串結(jié)束標(biāo)志00。fgetsfgets函數(shù)的返回值是字符數(shù)組的首地址。讀取字符函數(shù)的返回值是字符數(shù)組的首地

35、址。讀取字符串后文件位置指針也自動后移若干個位置。串后文件位置指針也自動后移若干個位置。例如:例如:fgets(str,n,fp);fgets(str,n,fp); 意義是從意義是從fpfp所指的文件中讀出所指的文件中讀出n-1n-1個字符送入字符數(shù)組個字符送入字符數(shù)組strstr中。中。 【例【例10.310.3】從】從test2.txttest2.txt文件中讀入文件中讀入8 8個字符組成一個字符串。個字符組成一個字符串。#include#includemain()main() FILE FILE * *fp;fp; char arr20; char arr20; if(fp=fopen(

36、c:test2.txt ,r)=NULL) if(fp=fopen(c:test2.txt ,r)=NULL) printf(nCannot open file printf(nCannot open file,strike any key exit!);strike any key exit!); getchar(); getchar(); exit(1); exit(1); fgets(arr,9,fp); fgets(arr,9,fp); printf(n%sn,arr); printf(n%sn,arr); fclose(fp); fclose(fp); 本例定義了一個字符數(shù)組本例定義

37、了一個字符數(shù)組strstr共共2020個字節(jié),在以讀文本文件方式打開文件個字節(jié),在以讀文本文件方式打開文件stringstring后,從中讀出后,從中讀出8 8個字符送入個字符送入strstr數(shù)組,在第數(shù)組,在第9 9個數(shù)組元素個數(shù)組元素str8str8內(nèi)加上內(nèi)加上00,然后在屏幕上顯示輸出,然后在屏幕上顯示輸出strstr數(shù)組存放的字符串。輸出的八個字符正是數(shù)組存放的字符串。輸出的八個字符正是例例10.210.2的前八個字符。的前八個字符。 2.寫字符串函數(shù)寫字符串函數(shù)fputsfputs函數(shù)的功能是向指定的文件寫入一個字符串函數(shù)的功能是向指定的文件寫入一個字符串不寫入字符串結(jié)束標(biāo)記不寫入字

38、符串結(jié)束標(biāo)記0),當(dāng)成功寫入一個),當(dāng)成功寫入一個字符串后,文件的位置指針會自動后移,函數(shù)返回字符串后,文件的位置指針會自動后移,函數(shù)返回值為值為0;否則,返回;否則,返回EOF符號常量,其值為符號常量,其值為-1)。)。其調(diào)用形式為:其調(diào)用形式為: fputs( 字符串字符串, 文件指針文件指針 ); 其中字符串可以是字符串常量,也可以是字符數(shù)組名其中字符串可以是字符串常量,也可以是字符數(shù)組名或指針變量。或指針變量。 例如:例如:fputs(“a1b2”, fp) 是把字符串是把字符串“a1b2寫入寫入fp所指的文件之中。所指的文件之中。 【例【例10.410.4】在文件】在文件test2.

39、txttest2.txt中追加一個不超過中追加一個不超過2020個字符的字符串。個字符的字符串。#include#includemain()main() FILE FILE * *fp;fp; char ch,st21; char ch,st21; int count; int count; if(fp=fopen(c:test2.txt ,a+)=NULL) if(fp=fopen(c:test2.txt ,a+)=NULL) printf(Cannot open file strike any key exit!); printf(Cannot open file strike any k

40、ey exit!); getchar(); getchar(); exit(1); exit(1); printf(input a string:n); printf(input a string:n); gets (st); / gets (st); /* * 輸入不超過輸入不超過2020個字符的字符串暫放入數(shù)組個字符的字符串暫放入數(shù)組stst中中 * */ / fputs(st,fp); fputs(st,fp); rewind(fp); / rewind(fp); /* * 文件內(nèi)部位置指針移到文件的開始位置文件內(nèi)部位置指針移到文件的開始位置 * */ / printf(“n All o

41、f this file is: n”); printf(“n All of this file is: n”); ch=fgetc(fp); ch=fgetc(fp); while(ch!=EOF) while(ch!=EOF) putchar(ch); putchar(ch); ch=fgetc(fp); ch=fgetc(fp); printf(n); printf(n); fclose(fp); fclose(fp); 本例要求在本例要求在test2.txttest2.txt文件末添加一個字符串,因而,在程序第文件末添加一個字符串,因而,在程序第7 7行以追加讀寫文本文件的方式打開文件行

42、以追加讀寫文本文件的方式打開文件test2.txttest2.txt。然后輸。然后輸入字符串暫放入數(shù)組入字符串暫放入數(shù)組stst中,并用中,并用fputsfputs函數(shù)把該串寫入文件函數(shù)把該串寫入文件test2.txttest2.txt。后在程序中用。后在程序中用rewindrewind函數(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)scanf(“%s”,st)和和gets (st)gets (st)輸入字符串時的不同。輸入字符串時的不同。 考慮:如果

43、不用考慮:如果不用EOFEOF,而是用,而是用feof()feof()來判斷文件結(jié)束,上述陰影部分程序該如何改寫?來判斷文件結(jié)束,上述陰影部分程序該如何改寫? 數(shù)據(jù)塊讀寫函數(shù)fread和fwtrite 語言還提供了用于整塊數(shù)據(jù)的讀寫函數(shù)??捎脕碜x寫語言還提供了用于整塊數(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, fread (buffer, size, count, fp);count, fp);寫數(shù)據(jù)塊函數(shù)調(diào)用的一般形式為:寫數(shù)

44、據(jù)塊函數(shù)調(diào)用的一般形式為:fwrite (buffer, size, fwrite (buffer, size, count,fp);count,fp); 其中:其中: size size 表示每個數(shù)據(jù)塊的字節(jié)數(shù)。表示每個數(shù)據(jù)塊的字節(jié)數(shù)。 count count 表示要讀寫的數(shù)據(jù)塊塊數(shù)。表示要讀寫的數(shù)據(jù)塊塊數(shù)。 fp fp 表示文件指針。表示文件指針。 buffer buffer 是一個指針。是一個指針。 fread (buffer,size,count,fp) 的功能是從的功能是從fp所指向文件的位置所指向文件的位置指針的當(dāng)前位置讀取指針的當(dāng)前位置讀取count塊數(shù)據(jù)每個數(shù)據(jù)所占的字節(jié)數(shù)塊數(shù)

45、據(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值,否則返回值,否則返回NULL符號常量,其值為符號常量,其值為0)。)。 例如:例如:fread(fa,4,5,fp); 其意義是從其意義是從fp所指的文件中,每次所指的文件中,每次讀讀4個字節(jié)個字節(jié)(一個實(shí)數(shù)一個實(shí)數(shù))送入實(shí)型數(shù)組送

46、入實(shí)型數(shù)組fa中,連續(xù)讀中,連續(xù)讀5次,即讀次,即讀5個實(shí)數(shù)到個實(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ù)后,文件位置指針會自動后移動后移count*size個字節(jié)的位置。若數(shù)據(jù)寫入正確,則返回個字節(jié)的位置。若數(shù)據(jù)寫入正確,則返回count值;否則返回值;否則返回NULL符號常量,其值為符號常量,其值為0)。)?!纠纠?0.51

47、0.5】 從鍵盤上輸入從鍵盤上輸入1010個整數(shù),并把這些整數(shù)寫入個整數(shù),并把這些整數(shù)寫入c:c:盤根目錄下名為盤根目錄下名為test3.dattest3.dat的二進(jìn)制文件中。的二進(jìn)制文件中。#include stdio.h#include stdio.hmain( )main( ) FILE FILE * *fp;fp; int data10,i;int data10,i; if(fp=fopen(c:test3.dat,wb)=NULL)if(fp=fopen(c:test3.dat,wb)=NULL) printf(File can not open!n);printf(File ca

48、n not open!n); exit(0);exit(0); printf(“Input ten integers: ”);printf(“Input ten integers: ”); for(i=0;i10;i+)for(i=0;i10;i+) scanf(%d, &datai);scanf(%d, &datai); fwrite(data,sizeof(int),10,fp);fwrite(data,sizeof(int),10,fp); fclose(fp);fclose(fp);printf(“Write over! n”);printf(“Write over! n”); 【例【

49、例10.610.6】 從從c:c:盤根目錄下名為盤根目錄下名為test3.dattest3.dat的二進(jìn)制文件中讀取的二進(jìn)制文件中讀取1010個整數(shù),要求先讀取第個整數(shù),要求先讀取第610610個整數(shù),再讀取第個整數(shù),再讀取第1515個整數(shù)。并把它們輸出到屏幕上顯示。個整數(shù)。并把它們輸出到屏幕上顯示。#include stdio.h#include stdio.hmain( )main( ) FILE FILE * *fp;fp; int data10,i;int data10,i; if(fp=fopen(c:test3.dat,rb)=NULL)if(fp=fopen(c:test3.da

50、t,rb)=NULL) printf(File can not open!n);printf(File can not open!n); exit(0);exit(0); fseek(fp, 5L fseek(fp, 5L* *sizeof(int) ,0); /sizeof(int) ,0); /* *先把文件位置指針后移先把文件位置指針后移* */ / fread(data, sizeof(int),5, fp); /fread(data, sizeof(int),5, fp); /* *先讀取第先讀取第610610個整數(shù)放入個整數(shù)放入data0data4data0data4* */ /r

51、ewind(fp); /rewind(fp); /* *把文件位置指針移到文件開始把文件位置指針移到文件開始* */ /fread(data+5, sizeof(int),5, fp); /fread(data+5, sizeof(int),5, fp); /* *再讀取第再讀取第1515個整數(shù)放入個整數(shù)放入data5data9data5data9* */ /fclose(fp);fclose(fp); for(i=0;i10;i+)for(i=0;i10;i+) printf(%5d,datai);printf(%5d,datai); 【例【例10.710.7】從鍵盤輸入三個學(xué)生數(shù)據(jù),寫入一

52、個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏】從鍵盤輸入三個學(xué)生數(shù)據(jù),寫入一個文件中,再讀出這兩個學(xué)生的數(shù)據(jù)顯示在屏幕上。幕上。#include#includestruct stustruct stu char name20; char name20; int num; int num; int age; int age; char addr30; char addr30;boya3,boyb3,boya3,boyb3,* *pp,pp,* *; ;main()main() FILE FILE * *fp;fp; int i; int i; pp=boya; pp=boya; =boyb; =bo

53、yb; if(fp=fopen(c:studata,wb+)=NULL) if(fp=fopen(c:studata,wb+)=NULL) printf(Cannot open file strike any key exit!); printf(Cannot open file strike any key exit!); getchar(); getchar(); exit(1); exit(1); for(i=0;iname,&pp-num,&pp-age,pp-addr); pp=boya; fwrite(pp,sizeof(struct stu),3,fp); rewind(fp);

54、 fread(,sizeof(struct stu),3,fp); fclose(fp); printf(nnnametnumber age addrn); for(i=0;iname,-num,-age,-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ù)之后,寫入

55、該文件中。然后把文件內(nèi)部位置指針移到文件首,讀出三塊學(xué)生數(shù)據(jù)后,在屏幕上顯示。針移到文件首,讀出三塊學(xué)生數(shù)據(jù)后,在屏幕上顯示。 格式化讀寫函數(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(文件指針文件指針,格式字符串格式字符

56、串,輸入表列輸入表列); fprintf(文件指針文件指針,格式字符串格式字符串,輸出表列輸出表列); 例如:例如: fscanf(fp,%d%s,&i,s); fprintf(fp,%d%c,j,ch); 用用fscanf和和fprintf函數(shù)也可以完成例函數(shù)也可以完成例10.7的問題。修的問題。修改后的程序如例改后的程序如例10.8所示。所示。 【例【例10.810.8】用】用fscanffscanf和和fprintffprintf函數(shù)解決例函數(shù)解決例10.710.7的問題。的問題。#include#includestruct stustruct stu char name20; char

57、 name20; int num; int num; int age; int age; char addr30; char addr30;boya3,boyb3,boya3,boyb3,* *pp,pp,* *; ;main( )main( ) FILE FILE * *fp;fp;int i;int i;pp=boya;pp=boya;=boyb;=boyb;if(fp=fopen(c:studata,wb+)=NULL)if(fp=fopen(c:studata,wb+)=NULL) printf(Cant open file strike any key exit!);printf(C

58、ant open file strike any key exit!);getch();getch();exit(1);exit(1); 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,&-num,&-age,-addr);printf(nnnametnumber age addrn);=boyb;for(i=0;iname,-num, -age,-addr);fclose(fp);

59、本程序中本程序中fscanf和和fprintf函數(shù)每次只能讀寫一個結(jié)構(gòu)體數(shù)組元素,因此采用了循函數(shù)每次只能讀寫一個結(jié)構(gòu)體數(shù)組元素,因此采用了循環(huán)語句來讀寫全部數(shù)組元素。環(huán)語句來讀寫全部數(shù)組元素。 還要注意指針變量還要注意指針變量pp,。由于循環(huán)改變了它們的,。由于循環(huán)改變了它們的值,因此在程序中分別對它們重新賦予了數(shù)組的首地址。值,因此在程序中分別對它們重新賦予了數(shù)組的首地址。 【例【例10.910.9】 把命令行參數(shù)中的前一個文件名標(biāo)識的文件,復(fù)制到后一個文件名標(biāo)識的文件把命令行參數(shù)中的前一個文件名標(biāo)識的文件,復(fù)制到后一個文件名標(biāo)識的文件中,中, 如命令行中只有一個文件名則把該文件寫到標(biāo)準(zhǔn)輸

60、出文件如命令行中只有一個文件名則把該文件寫到標(biāo)準(zhǔn)輸出文件( (顯示器顯示器) )中。中。#include#includemain(int argc,char main(int argc,char * *argv)argv) FILE FILE * *fp1,fp1,* *fp2;fp2; char ch; char ch; if(argc=1) / if(argc=1) /* *如命令行參數(shù)中沒有給出文件名,則給出提示信息如命令行參數(shù)中沒有給出文件名,則給出提示信息* */ / printf(Have not enter file name, strike any key exit); pri

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論