高級語言程序設計 課件 鄭巖 第9、10章 編譯預處理、文件_第1頁
高級語言程序設計 課件 鄭巖 第9、10章 編譯預處理、文件_第2頁
高級語言程序設計 課件 鄭巖 第9、10章 編譯預處理、文件_第3頁
高級語言程序設計 課件 鄭巖 第9、10章 編譯預處理、文件_第4頁
高級語言程序設計 課件 鄭巖 第9、10章 編譯預處理、文件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第9章編譯預處理9.1宏定義命令文件包含命令9.2條件編譯命令9.3本章內(nèi)容導讀本章主要介紹宏定義、文件包含和條件編譯三種編譯預處理命令。通過學習本章,讀者應掌握以下內(nèi)容:掌握宏定義及其使用方法;了解文件包含命令的格式和使用方法;了解條件編譯命令的各種格式和功能。編譯預處理是指對源程序進行編譯之前,先對源程序中的各種預處理命令進行處理;然后再將處理結果和源程序一起進行編譯,以獲得目標代碼。分類

無參數(shù)宏定義命令有參數(shù)宏定義命令功能

用于定義程序中的符號常量、類型別名、運算式代換和語句代換等。

優(yōu)勢

提高源程序的可維護性。

提高源程序的可移植性。減少源程序中重復書寫字符串的工作量。9.1宏定義命令格式

#define宏名字符序列其中“define”為宏定義命令;“宏名”是標識符的一種,通常用大寫字母表示,以便于與變量區(qū)別;“字符序列”可以是常數(shù)、表達式、格式串等。說明宏名一般用大寫字母,以便與變量區(qū)別。但這并非是規(guī)定。宏定義不是C語句,所以不能在行尾加分號。否則,宏展開時,會將分號作為字符串的1個字符,用于替換宏名。宏展開時,預處理程序僅按宏定義簡單替換宏名,而不作任何檢查。如果有錯誤,只能由編譯程序在編譯宏展開后的源程序時發(fā)現(xiàn)。宏定義命令#define出現(xiàn)在函數(shù)的外部,宏名的有效范圍是從定義命令之后,到本文件結束。通常,宏定義命令放在文件開頭處。進行宏定義時,可以引用已定義的宏名。對雙引號括起來的字符串內(nèi)的字符,即使與宏名同名,也不進行宏展開。例如#definePI3.141591、無參宏定義9.1宏定義命令說明在定義無參宏時,如果“字符序列”是一個常量,則相應的“宏名”就是一個符號常量。恰當命名的符號常量,除具有宏定義的上述優(yōu)點外,還能表達出它所代表常量的實際含義,從而增強程序的可讀性,例如:#defineEOF-1 /*文件尾*/#defineNULL0 /*空指針*/#defineMIN1 /*極小值*/#defineMAX31 /*極大值*/#defineSTEP2 /*步長*/提高源程序的可修改性,修改宏定義中的“字符序列”可以起到一改全改的作用。

1、無參宏定義9.1宏定義命令格式#define宏名(參數(shù)表)帶參數(shù)的字符序列調(diào)用和展開宏調(diào)用格式:宏名(實參表)宏展開:用宏調(diào)用提供的實參字符串,直接置換宏定義命令行中、相應形參字符串,非形參字符保持不變。說明定義有參宏時,宏名與左圓括號之間不能留有空格。否則,C編譯系統(tǒng)將空格以后的所有字符均作為替代字符串,而將該宏視為無參宏。有參宏的展開,只是將實參作為字符串,簡單地置換形參字符串,而不做任何語法檢查。在定義有參宏時,在所有形參外和整個字符串外,均加一對圓括號。2、有參宏定義9.1宏定義命令有參宏與有參函數(shù)的區(qū)別(1)調(diào)用有參函數(shù)時,先計算實參表達式的值,然后再傳給形參。而展開有參宏時,不計算實參表達式的值,只將實參簡單地替換形參。(2)有參函數(shù)中,實參和形參需要定義類型,且類型一致;而有參宏中,形參是沒有類型的,因此用于替換的實參,什么類型都可以。(3)無論調(diào)用多少次有參函數(shù),都不會使目標程序變長,但每次調(diào)用都要占用系統(tǒng)時間進行調(diào)用現(xiàn)場的保護和恢復;而有參宏,由于宏展開是在編譯預處理時進行的,所以不占運行時間,但是每使用一次,都會使目標程序增大。(4)有參函數(shù)在程序運行時進行值的處理,需要分配臨時的內(nèi)存單元;而有參宏展開是編譯預處理時進行,展開時不分配內(nèi)存單元,不進行值的傳遞處理。宏定義中,對參數(shù)是否加括號是有區(qū)別的。#definePOWER(x)((x)*(x))若a=4,b=6,則POWER(a+b)=((4+6)*(4+6))=100#definePOWER(x)(x*x)若a=4,b=6,則POWER(a+b)=(4+6*4+6)=349.1宏定義命令定義一個源文件可以將另一個源文件的全部內(nèi)容包含進來。格式格式一:#include"文件名"

格式二:#include<文件名>注意:(1)一般被包含文件以.h為后綴。(2)一個#include命令只能指定一個被包含文件。

(3)若file1.c包含file2.h,而file2.h又包含file3.h,則可在file1.c中有兩個包含命令,且file3.h的包含命令行在file2.h的包含命令行之前。

方式一:file1.c中#include"file3.h"#include"file2.h"file2.h中可無#include"file3.h"方式二:file1.c中#include"file2.h"file2.h中#include"file3.h"

9.2文件包含命令區(qū)別使用雙引號:系統(tǒng)首先到當前目錄下查找被包含文件,如果沒找到,再到系統(tǒng)指定的“包含文件目錄”(由用戶在配置環(huán)境時設置)去查找,必要時在文件名前加上所在的路徑。使用尖括號:直接到系統(tǒng)指定的“包含文件目錄”去查找。一般情況下,如果包含C語言的標準頭文件,則使用這種格式。優(yōu)勢一個大程序,通常分為多個模塊,并由多個程序員分別編程。文件包含功能,可將多個模塊共用的數(shù)據(jù)(如符號常量和數(shù)據(jù)結構)或函數(shù),集中到一個單獨的文件。凡是要使用其中數(shù)據(jù)或調(diào)用其中函數(shù)的程序員,只要使用文件包含功能,將所需文件包含進來即可,不必再重復定義。9.2文件包含命令說明編譯預處理時,預處理程序將查找指定的被包含文件,并將其復制到#include命令出現(xiàn)的位置上。常用在文件頭部的被包含文件,稱為“標題文件”或“頭部文件”,常以h(head)作為后綴,簡稱頭文件。在頭文件中,除可包含宏定義外,還可包含外部變量定義、結構類型定義等。一條包含命令,只能指定一個被包含文件。如果要包含n個文件,則要用n條包含命令。文件包含可以嵌套,即被包含文件中又包含另一個文件。9.2文件包含命令定義根據(jù)給定的條件決定是否對某些程序進行編譯。采用條件編譯時,可以減少目標程序的長度。格式一#ifdef

標識符程序段1[#else程序段2]#endif功能

當“標識符”已經(jīng)被#define命令定義,則編譯程序段1;否則編譯程序段2。其中[]中的內(nèi)容,即#else部分可以省略,即:#ifdef

標識符

程序段1#endif9.3條件編譯命令格式二#ifndef

標識符程序段1[#else程序段2]#endif功能

當“標識符”沒有被#define命令定義,則編譯程序段1;否則編譯程序段2。其中[]中的內(nèi)容,即#else部分可以省略。

格式與前面的#ifdef~#endif命令相同,功能恰好與之相反。9.3條件編譯命令格式三#if表達式程序段1[#else

程序段2]#endif功能

當表達式為“真”(非0)時,則編譯程序段1;否則編譯程序段2。其中,[]中的內(nèi)容,即#else部分可以省略。9.3條件編譯命令ThankYou!第10章文件10.1文件概述文件的打開和關閉函數(shù)10.2文件的讀/寫函數(shù)10.310.4文件的定位函數(shù)本章內(nèi)容導讀本章主要介紹與文件操作相關的一些庫函數(shù),包括文件打開、關閉、字符讀/寫、字符串讀/寫、數(shù)據(jù)塊讀/寫、格式化讀/寫和定位函數(shù)及其使用方法等。通過學習本章,讀者應掌握以下內(nèi)容:掌握緩沖文件系統(tǒng)中有關文件操作的庫函數(shù)的使用方法;掌握對文件進行簡單處理。文件:存儲在外部介質上數(shù)據(jù)的集合,是操作系統(tǒng)數(shù)據(jù)管理的單位。文件命名

為標識一個文件,文件都必須有文件名。

文件名結構盤符:路徑\文件主名[.擴展名]。

注意:文件主名和擴展名均由字母和數(shù)字等字符組成。

讀文件

將磁盤文件中的數(shù)據(jù)傳送到計算機內(nèi)存的操作。

寫文件

從計算機內(nèi)存向磁盤文件中傳送數(shù)據(jù)的操作。

10.1文件概述

文件分類按文件的邏輯結構劃分

記錄文件:由具有一定結構的記錄組成(定長和不定長)。

流式文件:由一個個字符(字節(jié))數(shù)據(jù)順序組成。按文件的存儲介質劃分

普通文件:存儲介質(磁盤、磁帶等)文件。

設備文件:非存儲介質(鍵盤、顯示器、打印機等)文件。按文件的組織形式劃分

順序存取文件和隨機存取文件。按文件的內(nèi)容劃分

程序文件和數(shù)據(jù)文件,其中程序文件又可分為源文件、目標文件和可執(zhí)行文件。10.1文件概述文件分類按文件的存儲形式劃分ASCII文件(文本文件):每一字節(jié)存儲一個字符,便于對字符逐個處理。但一般占用存儲空間較多,而且要花費轉換時間(二進制與ASCII碼之間的轉換)。二進制文件:數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣存放。二進制文件是把內(nèi)存中的數(shù)據(jù),原樣輸出到磁盤文件中。可以節(jié)省存儲空間和轉換時間,但一個字節(jié)并不對應一個字符,不能直接輸出字符形式。文件存取方式順序存取:自上而下逐一地存取文件的內(nèi)容。保存數(shù)據(jù)時,將數(shù)據(jù)附加到文件的尾部,常用于文本文件。隨機存?。阂砸粋€完整的單位進行數(shù)據(jù)讀寫,常用于二進制文件。

10.1文件概述1、文件例inta=10000;0010011100010000內(nèi)存存儲形式0010011100010000二進制形式0011000100110000001100000011000000110000ASCII碼形式文本文件特點:存儲量大,轉換為二進制速度慢,直觀易記。二進制文件特點:存儲量小,無需轉換。但因1個字節(jié)不對應1個字符,故不能直接輸出其字符形式。

文件系統(tǒng)緩沖文件系統(tǒng)(標準I/O):系統(tǒng)自動為正在使用的文件開辟內(nèi)存緩沖區(qū)。非緩沖文件系統(tǒng)(系統(tǒng)I/O):由用戶在程序中為每個文件設定緩沖區(qū)。磁盤文件輸出文件緩沖區(qū)輸入文件緩沖區(qū)程序數(shù)據(jù)區(qū)a緩沖文件系統(tǒng)緩沖區(qū)指令區(qū)程序用戶數(shù)據(jù)區(qū)非緩沖文件系統(tǒng)注意:緩沖文件系統(tǒng)操作簡單,所以ANSIC僅采用緩沖文件系統(tǒng)處理文件。定義格式

FILE*文件型指針名1,*文件型指針名2,…;結構體FILE緩沖文件系統(tǒng)為每個正使用的文件在內(nèi)存開辟文件信息區(qū)。文件信息用系統(tǒng)定義的名為FILE的結構體描述。FILE定義在stdio.h中。typedef

struct/*文件類型聲明*/{shortlevel;/*緩沖區(qū)滿/空程度*/unsignedflags;/*文件狀態(tài)標志*/charfd;/*文件描述符*/unsignedcharhold;/*檢查緩沖區(qū)狀態(tài),若無緩沖區(qū)不讀取字符*/shortbsize;/*緩沖區(qū)大小*/unsignedchar*buffer;/*數(shù)據(jù)傳送緩沖區(qū)位置*/unsignedchar*curp;/*當前讀寫位置*/unsignedistemp;/*臨時文件指示*/shorttoken;/*用作有效檢測*/}FILE;/*結構體類型名FILE*/10.1文件概述2、文件型指針用法文件打開時,系統(tǒng)自動建立文件類型,并返回指向它的指針,程序通過該指針獲得文件信息,以訪問文件。文件關閉時,文件類型被釋放。文件名文件使用方式文件類型指針C程序操作系統(tǒng)磁盤注意:結構體類型名FILE必須大寫。10.1文件概述2、文件型指針對文件進行操作之前,必須先打開該文件;使用結束后,應立即關閉,以免數(shù)據(jù)丟失。C語言規(guī)定了標準輸入/輸出函數(shù)庫,用fopen()函數(shù)打開一個文件,用fclose()函數(shù)關閉一個文件。為增強程序的可靠性,打開一個文件的常用方法:

if((fp=fopen("文件名","操作方式"))==NULL){

printf("cannotopenthisfile\n");exit(0);}

10.2文件的打開和關閉函數(shù)文件打開函數(shù)fopen()函數(shù)首部

FILE*fopen(char*filename,char*mode)功能:按mode指定的“使用方式”打開filename指定的“文件名”對應的文件,同時自動地為該文件分配一個內(nèi)存緩沖區(qū)。返回值:若打開文件正確,則返回一個指向“文件型”的指針,系統(tǒng)自動建立文件類型,并返回指向它的指針,程序通過該指針獲得文件信息,訪問文件并進行各種操作。若打開文件出錯,則返回值為“NULL”,其中NULL是在頭文件“stdio.h”中定義的符號常量,其值為0,含義是“空地址”。要打開的文件名使用文件方式例:文件打開與測試。

FILE*fp;if((fp=fopen("filename","rb+"))==NULL){printf("cannotopenthisfile\n");exit(0);}例FILE*fp;

fp=fopen("c:\test","rb+");

"r+/rb+"(讀寫)"a/ab"(追加)"w/wb"(只寫)"r/rb"(只讀)"w+/wb+"(讀寫)"a+/ab+"(讀寫)為輸入打開一個文本/二進制文件為輸出打開或建立一個文本/二進制文件為讀/寫打開一個文本/二進制文件為讀/寫建立一個文本/二進制文件為讀/寫打開或建立一個文本/二進制文件向文本/二進制文件尾追加數(shù)據(jù)文件使用方式含義程序開始運行時,系統(tǒng)自動打開和關閉的三個標準設備文件,并分別定義了相應的文件型指針。文件型指針名標準設備名稱標準設備文件名稱stdin標準輸入設備(鍵盤)標準輸入stdout標準輸出設備(顯示器)標準輸出stderr標準錯誤輸出設備(顯示器)標準錯誤輸出10.2文件的打開和關閉函數(shù)文件關閉函數(shù)fclose()函數(shù)首部:int

fclose(FILE*fp)功能:關閉fp所指向的文件,同時自動釋放分配給該文件的內(nèi)存緩沖區(qū)。返回值:若正確關閉指定的文件,則返回0;否則,返回非0。文件打開時返回的文件類型指針磁盤文件輸出文件緩沖區(qū)輸入文件緩沖區(qū)程序數(shù)據(jù)區(qū)a緩沖文件系統(tǒng):fclose不關閉文件可能會丟失數(shù)據(jù)10.2文件的打開和關閉函數(shù)

符號常量EOF對文本文件執(zhí)行讀操作時,如果遇到文件尾,則返回一個文件結束標志EOF(其值在頭文件stdio.h中被定義為-1,含義是文件尾);對二進制文件執(zhí)行讀操作時,必須使用庫函數(shù)feof()判斷是否遇到文件尾。

文件尾測試函數(shù)feof()函數(shù)首部

int

feof(FILE*fp)功能:判斷fp所指向的文件是否到達文件尾。同時適用于ASCII碼文件和二進制文件。例如:!feof(input))表示源文件(用于輸入)未結束,循環(huán)繼續(xù)。返回值:若遇到文件尾,則返回值非0;否則,返回值0。1、字符尾測試函數(shù)10.3文件的讀/寫函數(shù)寫字符函數(shù)fputc()函數(shù)首部int

fputc(charch,FILE*fp)功能:將ch中的字符寫入fp所指向文件的當前位置,同時將讀/寫位置指針后移1字節(jié),即指向下一個讀/寫位置。返回值:若正確寫入字符,則返回剛寫入到文件的字符;否則,返回EOF。

讀字符函數(shù)fgetc()函數(shù)首部int

fgetc(FILE*fp)功能:從fp所指向文件的當前位置讀取一個字符,同時將讀/寫位置指針后移1字節(jié),即指向下一個讀/寫位置。返回值:若正確讀取字符,則返回讀取的單個字符;否則,返回EOF。上述兩個函數(shù)主要用于文本文件,也可用于二進制文件。2、字符讀/寫函數(shù)10.3文件的讀/寫函數(shù)【例10-1】從鍵盤輸入一些字符,逐個把它們存到磁盤文件中,直到輸入#結束。#include<stdio.h>

intmain(void){charch,filename[20];FILE*fp;

scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL){

printf("cannotopenthisfile\n");exit(0);}while((ch=getchar())!='#'){

fputc(ch,fp);

putchar(ch);}

fclose(fp);return0;}file1.txtComputerandC#computerandC讀字符串函數(shù)fgets()函數(shù)首部

char*fgets(char*str,int

length,FILE*fp)功能:從fp所指向文件的當前位置讀入一個字符串,即讀取length-1個字符,并在尾部自動補充一個字符串結束標志符'\0',組成字符串后存入str所指定的內(nèi)存區(qū),同時將讀寫位置指針后移實際讀出的字符個數(shù)字節(jié)。如果在讀取前n-1個字符中遇到文件尾EOF或回車,則讀取結束,并在讀取的字符后面補充一個字符串結束標志符'\0'組成字符串。返回值:若正確讀取字符串,則返回str對應的地址;否則,返NULL。3、字符串讀/寫函數(shù)10.3文件的讀/寫函數(shù)寫字符串函數(shù)fputs()函數(shù)首部int

fputs(char*str,FILE*fp)功能:把str所指向的一個字符串,舍去字符串結束標志符'\0'后寫入fp所指向文件的當前位置。同時將讀寫位置指針向后移動字符串長度的字節(jié)。返回值:若正確寫入字符串,則返回寫入文件的實際字符數(shù);否則,返回EOF。注意:不同的C語言編譯系統(tǒng)的返回值可能不同。3、字符串讀/寫函數(shù)10.3文件的讀/寫函數(shù)

寫數(shù)據(jù)塊函數(shù)fwrite()函數(shù)首部

int

fwrite(void*buffer,int

size,int

count,FILE*fp)功能:將從buffer開始的count個數(shù)據(jù)(每個數(shù)據(jù)占用size個字節(jié))一次性寫入fp所指向的文件。同時,將讀/寫位置指針向后移動size×count個字節(jié)。返回值:若正確寫入數(shù)據(jù)塊,則返回值是count;否則,返回0。說明buffer:指向要輸入/輸出數(shù)據(jù)存儲區(qū)的首地址的指針size:每個要寫入數(shù)據(jù)的字節(jié)數(shù)count:要寫入的數(shù)據(jù)個數(shù)fp:要寫入的文件指針fread與fwrite

一般用于二進制文件的讀/寫。4、數(shù)據(jù)塊讀/寫函數(shù)10.3文件的讀/寫函數(shù)讀數(shù)據(jù)塊函數(shù)fread()函數(shù)首部

int

fread(void*buffer,int

size,int

count,FILE*fp)功能:從fp所指向文件的當前位置開始,一次性讀入count個數(shù)據(jù)(每個數(shù)據(jù)占用size個字節(jié)),并將讀入的數(shù)據(jù)存放到以buffer為首地址的內(nèi)存區(qū);同時,將讀/寫位置指針向后移動size×count個字節(jié)。返回值:若正確讀取數(shù)據(jù)塊,則返回值是count;否則,返回0。說明buffer:指向要讀取數(shù)據(jù)存儲區(qū)的首地址的指針size:每個要讀取數(shù)據(jù)的字節(jié)數(shù)count:要讀取的數(shù)據(jù)個數(shù)fp:要讀取的文件指針4、數(shù)據(jù)塊讀/寫函數(shù)10.3文件的讀/寫函數(shù)例floatf[2];FILE*fp;

fp=fopen("aa.dat","rb");

fread(f,4,2,fp);for(i=0;i<2;i++)

fread(&f[i],4,1,fp);例structstudent{intnum;charname[20];charsex;intage;floatscore[3];}stud[10];for(i=0;i<10;i++)

fread(&stud[i],sizeof(structstudent),1,fp);【例10-2】從鍵盤輸入4個學生數(shù)據(jù),并將其轉存到磁盤文件中去。#include<stdio.h>#defineSIZE4struct

student_type{charname[10];

int

num;

intage;charaddr[15];}stud[SIZE];intmain(void){

inti;for(i=0;i<SIZE;i++)

scanf("%s%d%d%s",stud[i].name,&stud[i].num, &stud[i].age,stud[i].addr);

save();display();return0;}voidsave(){FILE*fp;

inti;if((fp=fopen("c:\stu_list","wb"))==NULL){printf("cannotopenfile\n");exit(0);}for(i=0;i<SIZE;i++)if(fwrite(&stud[i],sizeof(struct

student_type),1,fp)!=1)

printf("filewriteerror\n");

fclose(fp);}voiddisplay(){FILE*fp;

inti;if((fp=fopen("c:\stu_list","rb"))==NULL){printf("cannotopenfile\n"); exit(0);}for(i=0;i<SIZE;i++){fread(&stud[i],sizeof(struct

student_type),1,fp);

printf("%-10s%4d%4d%-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr);}

fclose(fp);}zhang100119room-101fun100220room-102tan100321room-103ling100421room-1045、格式化讀/寫函數(shù)

格式化寫函數(shù)fprint()函數(shù)首部

int

fprintf(FILE*fp,char*format[,argument…])功能:將argument的值以format指定的格式寫入fp所指向的文件。返回值:若正確寫入數(shù)據(jù),則返回實際輸出字符的個數(shù);否則,返回值是負數(shù)。格式化讀函數(shù)fscanf()函數(shù)首部int

fscanf(FILE*fp,char*format[,argument…])功能:根據(jù)format指定的格式從fp所指向文件中讀入數(shù)據(jù)保存至argument所指向的內(nèi)存單元。返回值:若正確讀入數(shù)據(jù),則返回值是已讀入的數(shù)據(jù)個數(shù);否則,返回值是EOF。例fscanf(fp,"%d%f",&i,&f);

//若文件中有3,4.5,則將3送入i,4.5送入t

fprintf(fp,"%d,%f",i,t);

//將i和t按%d,%f格式輸出到fp文件10.3文件的讀/寫函數(shù)【例10-3】從鍵盤按格式輸入數(shù)據(jù)存到磁盤文件中去,并回顯到屏幕上。#include<stdio.h>intmain(void){chars[80],c[80];

int

a,b;FILE*fp;if((fp=fopen("test","w"))==NULL){puts("can'topenfile");exit();}

fscanf(stdin,"%s%d",s,&a);/*鍵盤輸入*/

fprintf(fp,"%s%d",s,a);/*寫入文件*/

fclose(fp);if((fp=fopen("test","r"))==NULL){puts("can'topenfile");exit();}

fscanf(fp,"%s%d",c,&b);/*從文件讀出*/

fprintf(stdout,"%s%d",c,b);/*屏幕顯示*/

fclose(fp);return0;}

與scanf()和printf()函數(shù)的功能相似,區(qū)別在于fscanf()和fprintf()函數(shù)的操作對象是指定文件,而scanf()和printf()函數(shù)的操作對象是標準輸入(stdin)輸出(stdout)文件。例如,inti=3;floatf=9.80;

fprintf(fp,"%2d,%6.2f",i,f);fprintf()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論