《C語(yǔ)言程序設(shè)計(jì)》課件第9章_第1頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》課件第9章_第2頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》課件第9章_第3頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》課件第9章_第4頁(yè)
《C語(yǔ)言程序設(shè)計(jì)》課件第9章_第5頁(yè)
已閱讀5頁(yè),還剩46頁(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)介

第9章文件9.1C語(yǔ)言文件系統(tǒng)的基本概念

9.2文件的打開(kāi)與關(guān)閉

9.3文件的讀寫(xiě)

9.1C語(yǔ)言文件系統(tǒng)的基本概念

9.1.1C文件是流文件

C語(yǔ)言把文件看做是一個(gè)字符的序列,即文件是由一個(gè)一個(gè)字符組成的字符流。因此C語(yǔ)言也將文件稱之為流。

9.1.2C語(yǔ)言支持兩種類型的文件

C語(yǔ)言支持兩種類型的文件:文本文件和二進(jìn)制文件。這兩種文件的區(qū)別在于存放數(shù)據(jù)的方式不同。文本文件的每一個(gè)字節(jié)存放一個(gè)ASCII碼,代表一個(gè)字符。二進(jìn)制文件把數(shù)據(jù)以二進(jìn)制數(shù)的格式存放在文件中,其占用存儲(chǔ)空間較少。C語(yǔ)言對(duì)文件的存取是以字符(字節(jié))為單位的,對(duì)文件的輸出僅受程序的控制,而不受物理符號(hào)(如回車(chē)換行符)的控制。9.1.3C語(yǔ)言對(duì)文件處理的兩種方法

C語(yǔ)言對(duì)文件的處理一般有兩種方法:緩沖文件系統(tǒng)和非緩沖文件系統(tǒng)。在緩沖文件系統(tǒng)中,系統(tǒng)在對(duì)文件進(jìn)行讀寫(xiě)之前首先在內(nèi)存區(qū)開(kāi)辟一個(gè)稱做緩沖區(qū)的專用內(nèi)存區(qū)域。從內(nèi)存向磁盤(pán)寫(xiě)文件時(shí)必須先寫(xiě)入緩沖區(qū),裝滿緩沖區(qū)后才一起寫(xiě)到磁盤(pán)上去;從磁盤(pán)讀文件時(shí)必須先將一批數(shù)據(jù)讀到緩沖區(qū)(充滿緩沖區(qū)),然后再?gòu)木彌_區(qū)將數(shù)據(jù)逐個(gè)送到用戶數(shù)據(jù)區(qū),如圖9.1所示。緩沖區(qū)的大小由各個(gè)具體的C語(yǔ)言版本確定,一般為512字節(jié)。圖9.1緩沖文件系統(tǒng)輸入輸出示意圖在非緩沖文件系統(tǒng)中,并不自動(dòng)開(kāi)辟大小確定的緩沖區(qū),而是由程序設(shè)定緩沖區(qū)的大小。一般地,用緩沖文件系統(tǒng)進(jìn)行的輸入/輸出稱為高級(jí)磁盤(pán)輸入/輸出,用非緩沖文件系統(tǒng)進(jìn)行的輸入/輸出稱為低級(jí)(低層)的輸入/輸出。ANSIC標(biāo)準(zhǔn)采用緩沖文件系統(tǒng)。

9.1.4C文件操作的一般方法

在C語(yǔ)言中,文件的基本操作包括文件的打開(kāi)、文件指針的定位、文件的讀寫(xiě)、出錯(cuò)檢測(cè)和文件關(guān)閉等內(nèi)容,對(duì)一個(gè)文件的操作過(guò)程一般如圖9.2所示,對(duì)文件的各種操作都是通過(guò)標(biāo)準(zhǔn)函數(shù)來(lái)完成的,所以,學(xué)習(xí)C語(yǔ)言的文件操作主要是學(xué)習(xí)掌握有關(guān)文件操作的函數(shù)。圖9.2C文件操作的一般過(guò)程9.1.5文件類型

緩沖文件系統(tǒng)中,每個(gè)被使用文件的有關(guān)信息(包括文件當(dāng)前的讀寫(xiě)位置、與文件對(duì)應(yīng)的內(nèi)存緩沖區(qū)地址、緩沖區(qū)中未被處理的字符數(shù)、文件的操作方式等)都要保存在一個(gè)“文件信息區(qū)”,為此系統(tǒng)定義了一個(gè)文件類型,稱為FILE類型,這實(shí)際上是一個(gè)結(jié)構(gòu)體類型:9.1.6文件類型指針

有了結(jié)構(gòu)體FILE類型后,可以定義若干個(gè)FILE類型的變量以保存相應(yīng)文件的信息,再定義文件指針變量,指向FILE類型的變量,例如:

FILE*fp1,*fp2;

其中,fp1、fp2就是指向FILE類型結(jié)構(gòu)的兩個(gè)指針變量。

在C程序中,通過(guò)fp使用變量中的文件信息,從而訪問(wèn)該文件。也就是說(shuō)C程序是通過(guò)文件指針變量找到與它相關(guān)的文件的。

注意:如果有n個(gè)文件,一般應(yīng)設(shè)n個(gè)指針變量(指向FILE類型結(jié)構(gòu)體的指針變量)以實(shí)現(xiàn)對(duì)每個(gè)文件的訪問(wèn)。

9.2文件的打開(kāi)與關(guān)閉

9.2.1文件打開(kāi)

在C語(yǔ)言中,使用fopen函數(shù)來(lái)打開(kāi)文件,fopen函數(shù)的調(diào)用格式為

fopen(“文件名”,“文件使用方式”);

其中,文件名是指文件的全名稱,包括相應(yīng)的路徑、主文件名、擴(kuò)展文件名(若有);文件使用方式是指打開(kāi)文件是為讀、寫(xiě)、追加,以及是二進(jìn)制文件還是文本文件。

文件的使用方式及其含義如表9.1所示。表9.1文件的使用方式及其含義

fopen函數(shù)執(zhí)行后返回一個(gè)FILE類型的指針,通常賦給一個(gè)文件指針變量(如fp)。這樣文件指針fp就和被打開(kāi)的文件聯(lián)系起來(lái)了,其后對(duì)文件的讀寫(xiě)就可以通過(guò)文件指針fp來(lái)進(jìn)行。例如:

fp=fopen("f1","r");

表示要打開(kāi)名字為f1的文件,文件使用方式為r(r代表read,即只讀),函數(shù)返回的FILE型指針賦給了指針變量fp,或者說(shuō)fp指向了文件f1。說(shuō)明:

(1)如果不能實(shí)現(xiàn)“打開(kāi)”的任務(wù),fopen函數(shù)將會(huì)返回一個(gè)出錯(cuò)信息。出錯(cuò)的原因可能是用“r”方式打開(kāi)一個(gè)并不存在的文件,磁盤(pán)出故障,磁盤(pán)已滿無(wú)法建立新文件等。此時(shí)fopen函數(shù)返回一個(gè)空指針值NULL(NULL在stdio.h文件中已被定義為0)。

因此,常用下面的方法打開(kāi)一個(gè)文件:即先檢查打開(kāi)的操作有否出錯(cuò),如果有錯(cuò)就在終端上輸出“不能打開(kāi)文件”。exit函數(shù)的作用是終止正在調(diào)用的過(guò)程。

(2)用以上的方式可以打開(kāi)文本文件或二進(jìn)制文件,這是ANSIC的規(guī)定,即用同一種緩沖文件系統(tǒng)來(lái)處理文本文件和二進(jìn)制文件。但目前使用的有些C編譯系統(tǒng)可能不完全提供所有這些功能(例如有的只能用?"r"、"w"、"a"?方式),有的C版本不用?"r+"、"w+"、"a+",而用?"rw"、"wr"、"ar"?等,請(qǐng)讀者注意所用系統(tǒng)的規(guī)定。

(3)在向計(jì)算機(jī)輸入文本文件時(shí),將回車(chē)換行符轉(zhuǎn)換為一個(gè)換行符,在輸出時(shí)把換行符轉(zhuǎn)換成為回車(chē)和換行兩個(gè)字符。而使用二進(jìn)制文件時(shí),不進(jìn)行這種轉(zhuǎn)換,在內(nèi)存中的數(shù)據(jù)格式與輸出到外部文件中的數(shù)據(jù)格式完全一致。

(4)程序開(kāi)始運(yùn)行時(shí),系統(tǒng)自動(dòng)打開(kāi)3個(gè)標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)出錯(cuò)輸出。通常這三個(gè)文件都與終端相聯(lián)系。因此以前我們所用到的從終端輸入或輸出都不需要打開(kāi)終端文件。

【例9.1】

使用fopen函數(shù)打開(kāi)一個(gè)文件。

程序如下:圖9.3例9.1的運(yùn)行結(jié)果9.2.2文件關(guān)閉

當(dāng)一個(gè)文件使用完畢后應(yīng)關(guān)閉,以防止再被誤用。

“關(guān)閉”就是使文件指針變量不指向該文件,也就是文件指針變量與文件“脫鉤”,此后不能再通過(guò)該指針對(duì)原來(lái)與其相聯(lián)系的文件進(jìn)行讀寫(xiě)操作,除非再次打開(kāi)文件,并使該指針變量重新指向該文件。

用fclose函數(shù)關(guān)閉文件。fclose函數(shù)調(diào)用的格式為

fclose(文件指針);

例如:

fclose(fp);

fclose函數(shù)調(diào)用成功,則返回值為0;否則返回EOF(-1)。EOF是在stdio.h文件中定義的符號(hào)常量,值為-1。

為防止文件數(shù)據(jù)丟失,文件使用完畢后必須關(guān)閉,特別是對(duì)以寫(xiě)方式打開(kāi)的文件。

9.3文?件?的?讀?寫(xiě)

9.3.1字符讀寫(xiě)函數(shù)

1.寫(xiě)字符函數(shù)(fputc)

fputc函數(shù)的調(diào)用格式為

fputc(字符表達(dá)式,文件指針);

fputc函數(shù)的功能是將字符表達(dá)式的值輸出到文件指針?biāo)赶虻奈募腥?。其中字符表達(dá)式指要輸出的字符,它可以是一個(gè)字符常量,也可以是一個(gè)字符變量?!拔募羔槨笔俏募闹羔樧兞?,“文件指針”指向的文件已經(jīng)以寫(xiě)或讀寫(xiě)方式打開(kāi)。

如果輸出成功,則fputc函數(shù)返回輸出的字符;如果輸出失敗,則返回一個(gè)EOF。

2.讀字符函數(shù)(fgetc)

fgetc函數(shù)的調(diào)用格式為

字符變量=fgetc(文件指針);

fgetc函數(shù)的功能是從“文件指針”指定的文件讀入一個(gè)字符,該文件必須是以讀或讀寫(xiě)方式打開(kāi)的。

fgetc函數(shù)的返回值為讀入的字符,并賦給字符變量。若調(diào)用fgetc函數(shù)讀字符時(shí)遇到文件結(jié)束符,則函數(shù)返回文件結(jié)束標(biāo)志EOF。

【例9.2】

設(shè)在當(dāng)前目錄下有一個(gè)名為gh.txt的文件,其內(nèi)容為“Ilikeprogramming!”,要求編一程序?qū)⒃撐募械膬?nèi)容打印在屏幕上。

程序如下:圖9.4例9.2的運(yùn)行結(jié)果9.3.2字符串讀寫(xiě)函數(shù)

文件的字符串讀寫(xiě)包括fgets函數(shù)和fputs函數(shù)。

1.讀字符串函數(shù)(fgets)

fgets函數(shù)的調(diào)用格式為

fgets(字符數(shù)組名,讀入字符的個(gè)數(shù),文件指針);

fgets的功能是從指定文件讀入一個(gè)字符串并放到字符數(shù)組中。fgets函數(shù)返回值為字符數(shù)組的首地址。

注意:fgets函數(shù)只能從文件指針指向的文件輸入“讀入字符個(gè)數(shù)-1”個(gè)字符,然后在最后加一個(gè)‘\0’字符,得到的字符串共有“讀入字符個(gè)數(shù)”個(gè)字符,并且把它們放到字符數(shù)組中。如果在讀完“讀入字符個(gè)數(shù)-1”個(gè)字符之前遇到換行符或EOF,讀入即結(jié)束。

2.寫(xiě)字符串函數(shù)(fputs)

fputs函數(shù)的調(diào)用格式為

fputs(字符串表達(dá)式,文件指針);

fputs函數(shù)的作用是將“字符串表達(dá)式”表示的字符串寫(xiě)入到fp指向的文件中去。如:

fputs("China",fp);

其作用是把字符串“China”輸出到fp指向的文件。

fputs函數(shù)中第一個(gè)參數(shù)可以是字符串常量、字符數(shù)組名或字符型指針。字符串末尾的‘\0’不輸出。若函數(shù)fputs調(diào)用成功,函數(shù)返回值為0;若失敗則函數(shù)的返回值為EOF。

以上兩個(gè)函數(shù)類似以前介紹過(guò)的gets和puts函數(shù),只是fgets和fputs函數(shù)以指定的文件作為讀寫(xiě)對(duì)象。

【例9.3】

編寫(xiě)一程序,把從鍵盤(pán)輸入的一字符串寫(xiě)入文件mytest1.txt中,輸入時(shí)以字符‘!’作為結(jié)束。假定在程序執(zhí)行前,TurboC的子目錄中并沒(méi)有mytest1.txt文件。

程序如下:圖9.5使用記事本打開(kāi)的txt文件內(nèi)容程序用循環(huán)等待用戶輸入,每一個(gè)字符輸入后,程序測(cè)試到輸入字符不為?'!',則把該字符讀入字符變量ch,然后寫(xiě)入fp指定的文件。所有字符輸入完畢后,由于用戶接著輸入了?'!',因此退出循環(huán)。所以本程序首先能夠從鍵盤(pán)把字符一個(gè)個(gè)讀入字符變量,然后寫(xiě)入到文件中,直到用戶輸入結(jié)束符?'!'?后,程序退出循環(huán),執(zhí)行關(guān)閉文件函數(shù)關(guān)閉文件。

程序運(yùn)行結(jié)果表明用戶的屏幕顯示和記事本文件的內(nèi)容是完全一致的,如圖9.6所示。圖9.6例9.3的運(yùn)行結(jié)果也可以使用FILE菜單中的Directory子菜單,輸入文件名myteste1.txt并回車(chē),在TC界面顯示該文件的內(nèi)容,如圖9.7所示。圖9.7使用Directory子菜單顯示的內(nèi)容

【例9.4】

把數(shù)組中的內(nèi)容(不包括?'\0'?)輸出到文件指針變量所指的文件中。

程序如下:程序說(shuō)明:程序用循環(huán)等待用戶輸入,當(dāng)一個(gè)字符串輸入完畢(用戶敲了回車(chē))以后,程序測(cè)試到字符數(shù)組中的字符串長(zhǎng)度大于0,因此把該字符串寫(xiě)入fp指定的文件,并且添加上回車(chē)符。當(dāng)?shù)?個(gè)字符串輸入完畢,用戶敲了回車(chē)以后,程序測(cè)試到字符串長(zhǎng)度大于0,因此把該字符串又寫(xiě)入fp指定的文件,同樣也加上回車(chē)符。第3串輸入了一個(gè)空格,因此形成一個(gè)空行。第4串輸入完畢后,由于用戶接著直接敲了回車(chē),因此測(cè)試到的字符串長(zhǎng)度為0,因此退出循環(huán),程序接著執(zhí)行關(guān)閉文件函數(shù)將文件關(guān)閉。因此本程序首先能夠從鍵盤(pán)把一行一行的字符串讀入字符數(shù)組,然后從數(shù)組中寫(xiě)入到文件,直到用戶直接敲回車(chē)符結(jié)束輸入后,程序執(zhí)行關(guān)閉文件函數(shù)來(lái)關(guān)閉文件。用戶的屏幕顯示和記事本文件的內(nèi)容是完全一致的。程序運(yùn)行結(jié)果如圖9.8所示。圖9.8例9.4的運(yùn)行結(jié)果用戶輸入的內(nèi)容如圖9.9所示,第3行輸入了一個(gè)空格,因此形成一個(gè)空行。圖9.9記事本顯示的文件mytest2的內(nèi)容9.3.3數(shù)據(jù)塊讀寫(xiě)函數(shù)

1.讀數(shù)據(jù)塊函數(shù)(fread)

fread函數(shù)的調(diào)用格式為

fread(指針,數(shù)據(jù)塊大小,數(shù)據(jù)塊數(shù)目,文件指針);

其中“指針”是讀入數(shù)據(jù)的存放地址,輸入的數(shù)據(jù)存入該內(nèi)存塊;“數(shù)據(jù)塊大小”為要讀寫(xiě)的字節(jié)數(shù);“數(shù)據(jù)塊數(shù)目”是要讀多少個(gè)“數(shù)據(jù)塊大小”的數(shù)據(jù)項(xiàng),因此一次讀入的字節(jié)數(shù)為:“數(shù)據(jù)塊數(shù)目”ד數(shù)據(jù)塊大小”個(gè)字節(jié);“文件指針”指的是已打開(kāi)的準(zhǔn)備讀出數(shù)據(jù)塊的文件。

fread函數(shù)的功能是從“文件指針”指向的文件中讀取“數(shù)據(jù)塊數(shù)目”個(gè)“數(shù)據(jù)塊大小”的數(shù)據(jù)塊,并存放到“指針”指定的內(nèi)存中。

若函數(shù)fread調(diào)用成功,則返回值為“數(shù)據(jù)塊數(shù)目”的值;若遇到文件結(jié)束或出錯(cuò)則返回0。

2.寫(xiě)數(shù)據(jù)塊函數(shù)(fwrite)

fwrite函數(shù)的調(diào)用格式為

fwrite(指針,數(shù)據(jù)塊大小,數(shù)據(jù)塊數(shù)目,文件指針);

其中,“指針”是準(zhǔn)備輸出數(shù)據(jù)塊的首地址,“數(shù)據(jù)塊大小”、“數(shù)據(jù)塊數(shù)目”的含義同fread函數(shù),“文件指針”指的是已經(jīng)打開(kāi)的準(zhǔn)備寫(xiě)入數(shù)據(jù)塊的文件。

fwrite函數(shù)的功能為將“指針”指向的內(nèi)存中的“數(shù)據(jù)塊數(shù)目”ד數(shù)據(jù)塊大小”個(gè)字節(jié)內(nèi)容寫(xiě)入到“文件指針”指向的文件中。若函數(shù)fwrite調(diào)用成功,則返回值為“數(shù)據(jù)塊數(shù)目”的值,即寫(xiě)入到文件的數(shù)據(jù)塊的個(gè)數(shù)。

說(shuō)明:如果文件以二進(jìn)制形式打開(kāi),用fread和fwrite函數(shù)就可以讀寫(xiě)任何類型的信息。

【例9.5】

假設(shè)一個(gè)學(xué)生的信息包括姓名、學(xué)號(hào)、年齡和成績(jī),寫(xiě)一程序完成從鍵盤(pán)讀入4個(gè)學(xué)生的信息,然后把它們轉(zhuǎn)存到磁盤(pán)文件上去。

問(wèn)題分析:

(1)根據(jù)要求,學(xué)生的信息可以是結(jié)構(gòu)體類型,4個(gè)學(xué)生信息可以由一個(gè)結(jié)構(gòu)體數(shù)組表示。在main函數(shù)中,從終端鍵盤(pán)輸入4個(gè)學(xué)生的數(shù)據(jù),然后調(diào)用save函數(shù),將這些數(shù)據(jù)輸出到以“stu_list”命名的磁盤(pán)文件中。fwrite函數(shù)的作用是將一個(gè)數(shù)據(jù)塊送到stu_list文件中。

設(shè)用戶輸入的數(shù)據(jù)為

li80011886

wang80021991

cao80031878

lin80041985

程序運(yùn)行結(jié)果如圖9.10所示。圖9.10例9.5的運(yùn)行結(jié)果9.3.4按指定格式讀寫(xiě)函數(shù)(fprintf函數(shù)和fscanf函數(shù))

文件按指定格式(格式化)讀寫(xiě)函數(shù)包括按指定格式(格式化)讀(fscanf)函數(shù)和按指定格式(格式化)寫(xiě)(fprintf)函數(shù)。

fscanf函數(shù)、fprintf函數(shù)與scanf函數(shù)、printf函數(shù)作用相仿,只是fprintf和fscanf函數(shù)的讀寫(xiě)對(duì)象不是終端而是磁盤(pán)文件。它們的調(diào)用格式為

fscanf(文件指針,格式字符串,輸入表列);

fprintf(文件指針,格式字符串,輸出表列);

例如:

fprintf(fp,"%d,%6.2f",i,t);它的作用是將整型變量i和實(shí)型變量t的值按%d和%6.2f的格式輸出到fp指向的文件上。如果i=3,t=4.5,則輸出到磁盤(pán)文件上的是以下的字符串:

3,4.50

再如:

fscanf(fp,"%d,%f",&i,&t);

它的作用是從fp指向的文件中按%d和%f格式讀入數(shù)據(jù)。注意文件中存放的是ASCII碼字符,讀入過(guò)程中自動(dòng)轉(zhuǎn)換成格式要求的數(shù)據(jù)。

磁盤(pán)文件上如果有以下字符:

3,4.5

則將磁盤(pán)文件中的字符“3”轉(zhuǎn)換成整數(shù)3送給變量i,將字符“4.5”轉(zhuǎn)換成實(shí)數(shù)4.5送給變量t。

【例9.6】

文件dmytest1.txt的內(nèi)容如下:

apple 505.5

pear 402.4

banana 253.0

orange 303.3

要求將文件的內(nèi)容按變量的形式取出。

程序如下:圖9.11例9.6的運(yùn)行結(jié)果用fprintf和fscanf函數(shù)對(duì)磁盤(pán)文件讀寫(xiě),使用方便、容易理解,但由于在輸入時(shí)要將ASCII碼轉(zhuǎn)換為二進(jìn)制形式,在輸出時(shí)又要將二進(jìn)制形式轉(zhuǎn)換成字符,這樣將增加花費(fèi)的時(shí)間。因此,在內(nèi)存與磁盤(pán)頻繁交換數(shù)據(jù)的情況下,最好不用fprintf和fscanf函數(shù),而用fread和fwrite函數(shù)。

9.3.5文件的定位

C文件中有一個(gè)位置指針指向當(dāng)前讀寫(xiě)的位置。順序讀寫(xiě)一個(gè)文件時(shí),一次讀寫(xiě)完成后,該位置指針自動(dòng)指向下一個(gè)位置。為了能夠改變讀寫(xiě)的順序,C語(yǔ)言提供了幾個(gè)函數(shù),強(qiáng)制使位置指針指向其他指定的位置。

1.移動(dòng)位置指針函數(shù)(fseek)

fseek函

溫馨提示

  • 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)論