




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1/40输入输入/输出的概念及学习目标输出的概念及学习目标3 1学会读写数据文件学会读写数据文件操作系统的标准输入操作系统的标准输入/输出设备:键盘输出设备:键盘/显示器显示器如果需要改变输入如果需要改变输入/输出的流向,需要重定向输出的流向,需要重定向另一个输入另一个输入/输出的对象就是磁盘数据文件输出的对象就是磁盘数据文件 使用数据文件来建立程序中的数据或保存数使用数据文件来建立程序中的数据或保存数据到文件中,是据到文件中,是C程序设计的习惯用法。程序设计的习惯用法。2/403文件的概念文件的概念2文件文件: :是指一组相关数据的有序集合。是指一组相关数据的有序集合。 这个数据集有一个名称
2、,叫做这个数据集有一个名称,叫做文件名文件名。操作系统是以文件为单位对数据进行管操作系统是以文件为单位对数据进行管理的。理的。 例如例如:C:24000101program.c,其中其中k:24000101叫叫路径,路径,program.c是文件名。当需要使用文件是文件名。当需要使用文件的时候,需要将文件调入内存中。的时候,需要将文件调入内存中。 3/403C语言中使用的数据文件的概念语言中使用的数据文件的概念2从文件编码和数据的组织方式来看,数据从文件编码和数据的组织方式来看,数据文件可分为文件可分为ASCII码文件码文件和和二进制码文件二进制码文件。 也叫文本文件也叫文本文件 文件文件程序
3、程序数据区数据区输输出出文件缓冲区文件缓冲区输输入入文件缓冲区文件缓冲区磁盘上内存中操作系统在内存中的缓冲区4/403文件的概念文件的概念2ASCII数据数据文件文件:文件在磁盘中存放时每个字符占一个字文件在磁盘中存放时每个字符占一个字节,每个字节存放相应字符的节,每个字节存放相应字符的ASCII码值。码值。二进制数据文件二进制数据文件:存储介质上保存的数据采用与内存数据存储介质上保存的数据采用与内存数据一致的表示形式存储一致的表示形式存储(为二进制形式)。为二进制形式)。 例例: 在文件中存放整数在文件中存放整数2147483647ASCII码码32H31H34H37H34H38H33H36
4、H34H37H二进制FFHFFHFFH7FH语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。一个输入输出流就是一个字节流或二进制流。 5/40 文件的位置指针位置指针位置指针用来指示当前的读写位置。用来指示当前的读写位置。 一般情况下,在对字符文件进行顺序读写时,文件的位置指针指向一般情况下,在对字符文件进行顺序读写时,文件的位置指针指向文件开头,这时如果对文件进行读的操作,就读第一个字符,然后文件开头,这时如果对文件进行读的操作,就读第一个字符,然后文件的位置指针顺序向后移一个位置,在下一次执行读的操作时,文件的位置指针顺序向后移一个位置,在下一次执行读的操作
5、时,就将指针指向的第二个字符读入。依此类推,直到遇文件尾就将指针指向的第二个字符读入。依此类推,直到遇文件尾. . 文件头 读写当前位置 文件尾有时希望在一个文件的原有数据之后再添加新的数据,应该把文件有时希望在一个文件的原有数据之后再添加新的数据,应该把文件位置指针移到文件尾,然后再接着写入新的数据,这就是文件的位置指针移到文件尾,然后再接着写入新的数据,这就是文件的追追加加。6/403文件的操作文件的操作3 文件的基本操作文件的基本操作 l定义文件指针定义文件指针 定义格式为:定义格式为:FILE * 文件文件指针变量;指针变量; 例如例如 FILE *fp; FILEFILEf5f5;
6、;l文件的打开文件的打开 文件指针文件指针 = fopen(文件名,操作模式)(文件名,操作模式)fp = fopen(c:file.dat, r);if (fp= NUUL) printf(“nCannot open the file”); return 1; 7/403文件的操作文件的操作3文件使用方式文件使用方式含含 义义r只读只读,文本文本以只读方式打开一个已有的文本文件。以只读方式打开一个已有的文本文件。w只写只写,文本文本以只写方式建立一个新的文本文件。如果该文以只写方式建立一个新的文本文件。如果该文件已存在则将它删去,然后重新建立一个新文件已存在则将它删去,然后重新建立一个新文件
7、。件。a追加追加,文本文本以添加方式打开一个文本文件,在文件末尾添以添加方式打开一个文本文件,在文件末尾添加。如果该文件不存在,则建立一个新文件后加。如果该文件不存在,则建立一个新文件后再添加。再添加。rb只读只读,二进制二进制以只读方式打开一个已有的二进制文件。以只读方式打开一个已有的二进制文件。wb只写只写,二进制二进制以只写方式打开一个二进制文件。以只写方式打开一个二进制文件。ab追加追加,二进制二进制以添加方式打开一个二进制文件。以添加方式打开一个二进制文件。8/403文件的操作文件的操作3打开文件文件方式打开文件文件方式文件使用方式文件使用方式含含 义义r+读写读写,文本文本以读写方
8、式打开一个已有的文本文件。以读写方式打开一个已有的文本文件。w+读写读写,文本文本以读写方式建立一个新的文本文件。以读写方式建立一个新的文本文件。a+读写读写,文本文本以读写方式打开一个文本文件,在文件末尾添加以读写方式打开一个文本文件,在文件末尾添加和修改,如果文件不存在,则建立一个新文件后和修改,如果文件不存在,则建立一个新文件后再添加和修改。再添加和修改。rb+读写读写,二进制二进制以读写方式打开一个已有的二进制文件。以读写方式打开一个已有的二进制文件。wb+ 读写读写,二进制二进制以读写方式建立一个新的二进制文件。以读写方式建立一个新的二进制文件。ab+读写读写,二进制二进制以读写方式
9、打开一个二进制文件。以读写方式打开一个二进制文件。9/403文件的操作文件的操作3 文件的关闭文件的关闭 fclose(文件指针);(文件指针); 例如:例如:fclose(fp); 文件的读写操作文件的读写操作l字符读写函数字符读写函数 :fgetc( )和和fputc( )l字符串读写函数:字符串读写函数:fgets( )和和fputs( )l数据块读写函数:数据块读写函数:fread( )和和fwrite( )l格式化读写函数:格式化读写函数:fscanf( )和和fprinf( ) 返回值:关闭成功返回值为;否则返回EOF(-1) 10/403文件的操作文件的操作4 字符读写操作字符读
10、写操作 1、fgetc( )的调用格式:的调用格式: 字符型变量字符型变量= fgetc( 文件指针文件指针 ); 例如:例如:ch = fgetc(fp);l语句功能是:从语句功能是:从fp指向的文件中读取一个字符并将这个字指向的文件中读取一个字符并将这个字符赋给符赋给char型变量型变量ch 。遇结束,返回。遇结束,返回EOF。2、fputc( )的调用格式:的调用格式: fputc(字符,文件指针字符,文件指针); 例如:例如: fputc(ch, fp); l语句功能是:语句功能是:将字符型变量将字符型变量ch的内容写入文件指针的内容写入文件指针fp所指所指的文本文件中。写入成功,返回
11、字符本身,反之的文本文件中。写入成功,返回字符本身,反之EOF。11/40读文件基本过程读文件基本过程 #include stdio.hint main()int i,x;FILE * fp ;fp=fopen(array.txt,r);if(fp=NULL)printf(文件不存在文件不存在);exit(0);printf(从文件中读取的数据从文件中读取的数据:n);for(i=1;i10;i+)fscanf(fp,%d,&x);if(i%5=0) printf(n);printf(%4d,x); fclose(fp);return 0;1、定义、定义FILE 指针指针2、打开文件、
12、打开文件3、确保文件有效、确保文件有效4、用函数读文件、用函数读文件5、关闭文件、关闭文件写文件基本过程写文件基本过程 #include stdio.hint main()int i,x;FILE * fp ;fp=fopen(array2.txt,“w);if(fp=NULL)printf(文件不存在文件不存在);exit(0);printf(从文件中读取的数据从文件中读取的数据:n);for(i=1;i10;i+)scanf(%d,&x);fprintf(fp,%4d,x); fclose(fp);return 0;1、定义、定义FILE 指针指针2、打开文件、打开文件3、确保文件
13、有效、确保文件有效4、用函数往文件、用函数往文件写数据写数据5、关闭文件、关闭文件a和和w的区别的区别 #include stdio.hint main()int i,x;FILE * fp ;fp=fopen(array.txt,“a);if(fp=NULL)printf(文件不存在文件不存在);exit(0);printf(从文件中读取的数据从文件中读取的数据:n);for(i=1;i10;i+)scanf(%d,&x);fprintf(fp,%4d,x); fclose(fp);return 0;打开文件方式打开文件方式二进制文件和文本二进制文件和文本文件文件 #include
14、stdio.hint main()int i,x;FILE * fp ;fp=fopen(array4.txt,wb);if(fp=NULL)printf(文件不存在文件不存在);exit(0);printf(将从键盘输入数据写入文件将从键盘输入数据写入文件:n);scanf(%d,&x);fwrite(&x,sizeof(x),1,fp);fclose(fp);return 0;#include stdio.hint main()int i,x;FILE * fp ;fp=fopen(array5.txt,w);if(fp=NULL)printf(文件不存在文件不存在);ex
15、it(0);printf(将从键盘输入数据写入文件将从键盘输入数据写入文件:n);scanf(%d,&x);fprintf(fp,%d,x);fclose(fp);return 0;二进制文件和文本二进制文件和文本文件文件 20_e.c3文件的操作文件的操作4例例1 1:读取一个给定的文本文件,并将文件的:读取一个给定的文本文件,并将文件的内容显示在屏幕上。内容显示在屏幕上。 问题分析问题分析l需要读取文本文件,所以以需要读取文本文件,所以以“r”操作模式将文件打开。操作模式将文件打开。 l文本文件的结束标志为文本文件的结束标志为EOFEOF(-1-1)。当文件读写指针指。当文件读写指
16、针指向向EOFEOF时,表示文件已经读到了尾部。因此,在读文件时,表示文件已经读到了尾部。因此,在读文件时,需要设计一个时,需要设计一个whilewhile循环语句,它的结束条件是读循环语句,它的结束条件是读取的字符等于取的字符等于EOFEOF。l需要读取的文件名称通过命令行参数带入,这样可以需要读取的文件名称通过命令行参数带入,这样可以扩展程序的使用范围,增加程序运行的灵活性。扩展程序的使用范围,增加程序运行的灵活性。17/40 算法描述 开始开始结束结束ch!=EOF非空行非空行NNargs!=2输出提示信息输出提示信息输出输出chYYYN打开不成功打开不成功输出提示信息输出提示信息fge
17、tc()chfclose()fgetc()ch18/40#include int main( ) FILE *fp; int ch; char name100; printf(“请输入文件名请输入文件名:n”) ; gets(name); fp=fopen(name,r); if(fp= NULL ) /* 打开文件打开文件 */ printf(Cannot open file !); return 1; ch = fgetc(fp); /* 以字符方式读取文件以字符方式读取文件 */ while (ch!=EOF) putchar(ch); ch = fgetc(fp); fclose(fp
18、); /* 关闭文件关闭文件 */ return 0;19/403文件的操作文件的操作4 字符串读写操作字符串读写操作 1、fgets( )的调用格式:的调用格式: fgets(字符数组名,字符数组名,n,文件指针,文件指针); 例如:例如:fgets(str, n, fp);l语句功能是:语句功能是:从从fp所指的文件中读出所指的文件中读出n-1个字符并存入字个字符并存入字符数组符数组str中。中。2、fputs ( )的调用格式:的调用格式: fputs(字符串,文件指针字符串,文件指针) ; 例如:例如: fputs(“C program”, fp);l语句功能是:语句功能是:将字符串将
19、字符串“C program”写入写入fp所指的文件所指的文件中。中。 20/403文件的操作文件的操作4例例2:编程从键盘输入一个源文件的文件名编程从键盘输入一个源文件的文件名和一个目的文件的文件名和一个目的文件的文件名,将源文件的内将源文件的内容拷贝到目的文件中。容拷贝到目的文件中。21/40#include int main() FILE *fp1,*fp2; char str20,srcName20,desName20; gets(srcName);gets(desName); if(fp1=fopen(srcName,r)=NULL) printf(file1 openned erro
20、r.n); exit(0); if(fp2=fopen(desName,w)=NULL) printf(file2 created error.n); exit(0); while(fgets(str,20,fp1)!= NULL) fputs(str,fp2); fclose(fp1); fclose(fp2); return 0;22/40#include #include int readFile( char lines 80);void writeFile(char lines 80, int n );main( ) int choice, num; char lines10080;
21、do /*显示菜单显示菜单*/ printf(n = MENU =n); printf(n read file.1); printf(n write file.2); printf(n exit.3); printf(n select:); scanf(“%d”,&choice); getchar(); /*用户选择用户选择*/ if (choice=1)num = readFile(lines); if (choice=2) writeFile(lines, num);while (choice!=3);例例3 3:P214P214例例6-136-1323/40int readFil
22、e(char lines 80) * 读文件读文件*/ int i; FILE *fp; char filename30; printf(“nEnter file name:”); /* 输入要进行写操作的文件名输入要进行写操作的文件名*/ gets(filename); if(fp=fopen(filename,“r”)=NULL) /* 打开文件打开文件*/ printf(Cannot open file!); return 0; for (i=0; !feof(fp); i+) /* 读取并显示文件读取并显示文件*/ fgets(&linesi0, 80, fp); puts(&
23、amp;linesi0); fclose(fp); return i;24/40void writeFile(char lines 80, int n) /* 写文件写文件 */ FILE *fp; char filename30; printf(“nEnter file name:”); /* 输入要进行写操作的文件名输入要进行写操作的文件名*/ gets(filename); if(fp=fopen(filename, “w”) = NULL) /* 打开文件打开文件*/ printf(Cannot open file!); return; while( n!=0 ) fputs(&
24、;lines-n0, fp); /*写出一行字符串写出一行字符串*/ fprintf(fp,n); fclose(fp); /* 关闭文件关闭文件 */25/403文件的操作文件的操作4 数据块数据块读写操作读写操作 1、 fread( )的调用格式:的调用格式: fread(buffer, size, count, fp); 例如:例如:fread(buffer, sizeof(int), 5, fp); ;l语句功能是:语句功能是:从从fp所指的文件中读取所指的文件中读取5块数据并放在块数据并放在buffer中,每块数据的大小为中,每块数据的大小为int类型占用的字节数量。类型占用的字节数
25、量。2、 fwrite ( )的调用格式:的调用格式: fwrite(buffer, size, count, fp); 例如:例如: fwrite(buffer, sizeof(float), 5, fp) ;l语句功能是:语句功能是:将将buffer中存放的数据写入中存放的数据写入fp所指的文件中,所指的文件中,共写入共写入5块数据,每块数据的大小为块数据,每块数据的大小为float类型占用的字节类型占用的字节数量。数量。 输入输出的内容都为二进制形式26/403文件的操作文件的操作4例例4 4:从键盘输入学生基本信息,写入二进制:从键盘输入学生基本信息,写入二进制文件;再从该文件中读取学
26、生基本信息,并文件;再从该文件中读取学生基本信息,并显示输出。显示输出。 问题分析问题分析l假设学生基本信息只包含学号、姓名、所属院系和专业假设学生基本信息只包含学号、姓名、所属院系和专业几个数据项,为此,需要定义一个结构类型。输入学生几个数据项,为此,需要定义一个结构类型。输入学生信息的时候,将所有数据项存放在一个结构型变量中,信息的时候,将所有数据项存放在一个结构型变量中,并以二进制的形式写入文件;在读取文件的时候,每次并以二进制的形式写入文件;在读取文件的时候,每次读取一个结构类型变量的字节数目,这样可以很轻松地读取一个结构类型变量的字节数目,这样可以很轻松地实现将结构型数据存储到磁盘文
27、件中的操作。实现将结构型数据存储到磁盘文件中的操作。 27/40#include #define NUM 30typedef struct info /* 表示学生基本信息的结构类型表示学生基本信息的结构类型 */ int No; /* 学号学号 */ char name16; /* 姓名姓名 */ char department32; /* 所属院系所属院系 */ char major32; /* 所学专业所学专业 */ INFO;28/40int main( ) INFO s; int i; FILE *fp; char filename32; printf(nEnter filename
28、:); /* 输入文件名输入文件名 */ gets(filename); if (fp=fopen(filename, wb) = NULL) /* 以二进制写方式打开文件以二进制写方式打开文件 */ printf(Cannot open %s file., filename); return 1; 29/40for (i=0; iNUM; i+) /* 通过键盘输入学生信息并写入文件通过键盘输入学生信息并写入文件 */ scanf(%d%s%s%s, &s.No, , s.department, s.major); fwrite(&s, sizeof(INFO),
29、 1, fp); fclose(fp); /* 关闭文件关闭文件 */ if (fp=fopen(filename, rb) = NULL) /* 以二进制读方式打开文件以二进制读方式打开文件 */ printf(nCannot open %s file., filename); return 1; while (fread(&s, sizeof(INFO), 1, fp) /* 从文件中读信息并显示输出从文件中读信息并显示输出 */ printf(n%4d%16s%20s%20s, s.No, , s.department, s.major); fclose(fp); /
30、* 关闭文件关闭文件 */ return 0;30/403文件的操作文件的操作4 格式化格式化读写操作读写操作 1、 fscanf( )的调用格式:的调用格式: fscanf(文件指针,格式字符串,输入列表文件指针,格式字符串,输入列表); 例如:例如: fscanf(fp, %d%f, &i, &j) ;l语句功能是:语句功能是:从从fp所指的文件中按照格式控制的描述读取所指的文件中按照格式控制的描述读取一个整型数值给一个整型数值给i,一个单精度数值给,一个单精度数值给j。2、 fprintf ( )的调用格式:的调用格式: fprintf(文件指针,格式字符串,输出列表文件
31、指针,格式字符串,输出列表); 例如:例如: fprintf(fp, %d%f, i, j);l语句功能是:语句功能是:将将i、j的内容按照格式控制的描述写入的内容按照格式控制的描述写入fp所所指的文件中。指的文件中。 输入输出的内容都为ASCII码值制形式注意:注意:用用fprintffprintf和和fscanffscanf函数对磁盘文件读写,使用方便,容易理解,函数对磁盘文件读写,使用方便,容易理解,但由于在输入时要将但由于在输入时要将ASCIIASCII码转换为二进制形式,在输出时又要码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间比较多。因此,在内存与磁将二进制形式转
32、换成字符,花费时间比较多。因此,在内存与磁盘频繁交换数据的情况下,最好不用盘频繁交换数据的情况下,最好不用fprintffprintf和和fscanffscanf函数,而函数,而用用freadfread和和fwritefwrite函数。函数。31/403文件的操作文件的操作4例例5 5:从键盘输入一个源文件的名称和一个目:从键盘输入一个源文件的名称和一个目的文件的名称的文件的名称, ,在源文件中存放了一个计算式在源文件中存放了一个计算式( (注意没有空格注意没有空格).). 例如例如1+21+2 程序的功能是从源文件中读取该式程序的功能是从源文件中读取该式, ,并计算并计算其结果其结果, ,将
33、式子和结果以如下样式输出将式子和结果以如下样式输出 1+2=31+2=332/40#include int main() FILE *fp1, *fp2; char srcName20,desName20,op; float src1,src2,result; printf(请输入源文件名:请输入源文件名:n); gets(srcName); printf(请输入目的文件名:请输入目的文件名:n); gets(desName); if(fp1=fopen(srcName,r)=NULL) printf(file1 openned error.n); exit(0); if(fp2=fopen(
34、desName,w)=NULL) printf(file2 created error.n); exit(0); fscanf(fp1,%f%c%f,&src1,&op,&src2); 33/40 switch(op) case +: result=src1+src2; break; case -: result=src1-src2; break; case *: result=src1*src2; break; case /: result=src1/src2; fprintf(fp2,%f%c%f=%f,src1,op,src2,result); fclose(fp
35、1); fclose(fp2); return 0;34/40#include #define NUM 30typedef struct info /* 表示学生基本信息的结构体类型表示学生基本信息的结构体类型*/int No;char name16;char department32;char major32;INFO;例例6 6:P219 P219 例例6-156-1535/40main( )INFO s;int i;FILE *fp;char filename32;printf(“nEnter file name:”); /* 输入文件名输入文件名 */gets(filename); /
36、* 以写方式打开文件以写方式打开文件*/if (fp=fopen(filename, w) = NULL) printf(nCannot open %s file., filename);return 1;36/40 /* 按照格式控制输入学生信息并写入文件*/ for (i=0; iNUM; i+) printf(n Enter No, name, department, major); scanf(%d%s%s%s, &s.No, , s.department, s.major); fprintf(fp, %d %s %s %sn, s.No, , s.de
37、partment, s.major); fclose(fp); /* 关闭文件 */ if (fp=fopen(filename, “r”)=NULL) /* 以读方式打开文件*/ printf(nCannot open %s file.,filename); return 1; while (!feof(fp) /* 按格式控制从文件读取并显示*/ fscanf(fp, %d%s%s%sn, &s.No, , s.department, s.major); printf(n%4d%16s%20s%20s, s.No, , s.department, s.maj
38、or); fclose(fp); /* 关闭文件 */37/403课堂练习课堂练习5已知在一个已知在一个resouce.txtresouce.txt文件中,第一行放文件中,第一行放了一个,表示第二行放的数的个数了一个,表示第二行放的数的个数 例如:例如:对该文件的第二行中的所有数据求和,保存对该文件的第二行中的所有数据求和,保存在文件在文件result.txtresult.txt#include int main( )int i,n=0,m,sum=0;FILE *fp;if (fp=fopen(k:2011-2012-2cresouce.txt, r) = NULL) printf(nCan
39、not openfile.);return 1;fscanf(fp,%d,&n);printf(n=%dn, n);for (i=0; in; i+) fscanf(fp,%d, &m);sum+=m;printf(sum=%dn, sum);fclose(fp); if (fp=fopen(k:2011-2012-2cresult.txt, w) = NULL) printf(nCannot openfile.);return 1;fprintf(fp,%d, sum);fclose(fp);return 0; 38/40顺序读写:顺序读写:位置指针按字节位置顺序移动。随机读
40、写随机读写:读写完上一个字符(字节)后,并不一定要读写其后续的字符(字节),而可以读些文件中任意位置上所需要的字符(字节)。1.文件位置指针的定位C语言提供以下有关函数使位置指针指向指定的位置:(1)rewind函数函数功能函数功能: :是使位置指针重新返回文件的开头,此函数没有返回值。 3数据文件的随机读写数据文件的随机读写539/40例例:有一个磁盘文件,第一次将它的内容显示在屏幕上,第二次有一个磁盘文件,第一次将它的内容显示在屏幕上,第二次把它复制到另一文件上。把它复制到另一文件上。 #include main()FILE *fp1,*fp2; fp1=fopen(file1.c,r);fp2=fopen(file2.c,w); while(!feof(fp1) putchar(getc(fp1); rewind(fp1);while(!feof(fp1) putc(getc(fp1),fp2); fclose(fp1);fclose(fp2); 40/40(2)fs
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考粤语的测试题及答案
- 万峰集团考试试题及答案
- 2026届山西省太原市育英中学高二化学第一学期期中监测模拟试题含解析
- 洗涤行业考试题及答案
- 家电公司财务管理办法
- 蚂蚁几何测试题及答案
- 家电公司绩效管理办法
- 大一新生军训总结
- 物业法规考试题及答案
- 用友u8实操考试试题及答案
- 材料品牌确认单
- DBJT13-370-2021 福建省柔性饰面砖应用技术标准
- GB/T 11538-2006精油毛细管柱气相色谱分析通用法
- DBJ53T-64-2014 建筑基坑工程监测技术规程
- 大唐集团公司工作票、操作票使用和管理标准(版)
- 中国政治思想史完整版课件
- Q∕SY 03026-2019 石脑油-行业标准
- 工业设计史-日本工业设计-自制
- D型便梁工法(二)
- 国库知识竞赛题库
- 群星演唱会招商方案
评论
0/150
提交评论