photoshop图形图像处理5.2 使用文件电子教案 中职c语言程序设计基础.ppt

上传人:春哥&#****71; 文档编号:90589788 上传时间:2023-05-16 格式:PPT 页数:35 大小:1.95MB
返回 下载 相关 举报
photoshop图形图像处理5.2 使用文件电子教案 中职c语言程序设计基础.ppt_第1页
第1页 / 共35页
photoshop图形图像处理5.2 使用文件电子教案 中职c语言程序设计基础.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《photoshop图形图像处理5.2 使用文件电子教案 中职c语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《photoshop图形图像处理5.2 使用文件电子教案 中职c语言程序设计基础.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、photoshop图形图像处理5.2 使用文件电子教案 中职 高教版 c语言程序设计基础在在C C程序中打开和关闭文件程序中打开和关闭文件完成对文件的读、写操作完成对文件的读、写操作灵活使用文件指针变量灵活使用文件指针变量能力目标:能力目标:在程序中对大量数据的处理在程序中对大量数据的处理任务一任务一 文件的打开与关闭级读写文件的打开与关闭级读写请观察下面的程序段:请观察下面的程序段:if(fp=fopen(c:a01.txt,r)=NULL)if(fp=fopen(c:a01.txt,r)=NULL)printf(nprintf(n不能打开不能打开 c:a01.txt c:a01.txt 文

2、件文件!);!);getch();getch();/*getch()/*getch()是从键盘输入一个字符,但不在屏是从键盘输入一个字符,但不在屏幕上显示幕上显示*/exit(1);exit(1);完成下面的问题:完成下面的问题:(1 1)为上面的程序段画出流程图。)为上面的程序段画出流程图。(2 2)根据上面的程序段,说出程序段的作用是什么?)根据上面的程序段,说出程序段的作用是什么?(以只读方式打开以只读方式打开c:a01.txtc:a01.txt文件文件)任务一 文件的打开与关闭级读写文件打开函数文件打开函数fopen()fopen()fopenfopen函数用来打开一个文件,其调用的一

3、般形式为:函数用来打开一个文件,其调用的一般形式为:文件指针名文件指针名=fopen(=fopen(文件名,使用文件方式文件名,使用文件方式)“文件指针名文件指针名”必须是被说明为必须是被说明为FILE FILE 类型的指针变量。类型的指针变量。“文件名文件名”是被打开文件的文件名,必须是字符串常量或字符是被打开文件的文件名,必须是字符串常量或字符串数组。串数组。“使用文件方式使用文件方式”是指文件的类型和操作要求。是指文件的类型和操作要求。知识盘点:使用方式使用方式 意意 义义 r r 以只读方式打开一个文本文件。不能以该方式打开一个不存在的文件,否则出以只读方式打开一个文本文件。不能以该方

4、式打开一个不存在的文件,否则出错错 w w 以只写方式打开一个文件文件。若文件不存在,则系统自动建立该文件;若文以只写方式打开一个文件文件。若文件不存在,则系统自动建立该文件;若文件已经存在,则在打开时将该文件删去,然后重新建立一个新文件件已经存在,则在打开时将该文件删去,然后重新建立一个新文件 r+r+以向文件末尾添加数据的方式打开一个文本文件。若文件不存在,则系统自动以向文件末尾添加数据的方式打开一个文本文件。若文件不存在,则系统自动建立该文件。建立该文件。a a 以读以读/写方式打开一个已有的文本文件,打开文件后,既可对文件进行读操作,写方式打开一个已有的文本文件,打开文件后,既可对文件

5、进行读操作,又可对文件进行写操作又可对文件进行写操作 w+w+以读以读/写方式建立一个新文本文件写方式建立一个新文本文件注意:注意:w+w+与与r+r+的区别,两者都是以读的区别,两者都是以读/写方式打开文件,但写方式打开文件,但r+r+方式只能方式只能打开一个已有的文件,而打开一个已有的文件,而w+w+方式可以打开已有的文件(但会删除该文件中的方式可以打开已有的文件(但会删除该文件中的原有内容),也可以打开一个不存在的文件(即建立一个新文件)原有内容),也可以打开一个不存在的文件(即建立一个新文件)a+a+以读以读/写方式打开一个文本文件,对文件的读写操作在文件的末尾进行。写方式打开一个文本

6、文件,对文件的读写操作在文件的末尾进行。知识盘点:知识盘点:注:注:在打开一个文件时,如果出错,在打开一个文件时,如果出错,fopenfopen将返回一个空指针值将返回一个空指针值NULLNULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并做相在程序中可以用这一信息来判别是否完成打开文件的工作,并做相应的处理。应的处理。文件关闭函数文件关闭函数fclose()fclose()文件使用完毕,应用关闭文件函数把文件关闭,以避免文件的数文件使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。据丢失等错误。fclosefclose函数调用的一般形式是:函数调用的一般形式是:f

7、close(fclose(文件指针文件指针);正常完成关闭文件操作时,正常完成关闭文件操作时,fclosefclose函数返回值为函数返回值为0 0。如返回非。如返回非零值则表示有错误发生。零值则表示有错误发生。一般来说,打开文件这一步骤是不会被忘掉的,因为不打开文一般来说,打开文件这一步骤是不会被忘掉的,因为不打开文件就无法对文件进行操作。而关闭文件却常常被初学者漏掉,这种失件就无法对文件进行操作。而关闭文件却常常被初学者漏掉,这种失误却可能导致严重的后果:丢失数据。误却可能导致严重的后果:丢失数据。知识盘点:#includestdio.h#includestdio.hmain()main(

8、)FILE*fp;FILE*fp;fp=fopen(a01.txt,r);fp=fopen(a01.txt,r);if(fp=NULL)if(fp=NULL)printf(printf(文件不能打开!文件不能打开!);elseelse printf(printf(文件能够打开!文件能够打开!););fclose(fp);fclose(fp);(1 1)给上面的程序作出注)给上面的程序作出注 (2 2)写出该程序完成的功能)写出该程序完成的功能(以只读方式打开文件a01.txt)3 3阅读下面的阅读下面的C C程序,并完成后面的问题。程序,并完成后面的问题。任务二任务二 文件的字符级读写文件的字

9、符级读写#includestdio.h#includestdio.hmain()main()FILE*fp;FILE*fp;char ch;char ch;if(fp=fopen(string,wt+)=NULL)if(fp=fopen(string,wt+)=NULL)printf(Cannot open file printf(Cannot open file!Strike any key exit!);Strike any key exit!);getch();getch();exit(1);exit(1);printf(input a string:n);printf(input a

10、string:n);ch=getchar();ch=getchar();任务二 文件的字符级读写 根据要求仔细阅读下面的程序,完成后面的问题。根据要求仔细阅读下面的程序,完成后面的问题。(程序的功能:从键盘输入一行字符,写入一个文件,(程序的功能:从键盘输入一行字符,写入一个文件,再把再把该文件内容读出显示在屏幕上。)该文件内容读出显示在屏幕上。)while(ch!=n)while(ch!=n)fputc(ch,fp);fputc(ch,fp);ch=getchar();ch=getchar();rewind(fp);rewind(fp);ch=fgetc(fp);ch=fgetc(fp);w

11、hile(ch!=EOF)while(ch!=EOF)putchar(ch);putchar(ch);ch=fgetc(fp);ch=fgetc(fp);printf(n);printf(n);fclose(fp);fclose(fp);(1 1)给上面的程序画写出注释。)给上面的程序画写出注释。(2 2)根据上面的程序画出流程图。)根据上面的程序画出流程图。任务二 文件的字符级读写读字符函数读字符函数fgetcfgetc()()功能:从指定的文件中读一个字符。功能:从指定的文件中读一个字符。调用形式:字符变量调用形式:字符变量=fgetc(=fgetc(文件指针文件指针);例如:例如:ch=

12、fgetc(fp)ch=fgetc(fp);其意义是从打开的文件;其意义是从打开的文件fpfp中读取一个字中读取一个字符并送入符并送入chch中。中。使用过程中的几点说明:使用过程中的几点说明:在在fgetcfgetc函数调用中,读取的文件必须是以读或读写方式打开函数调用中,读取的文件必须是以读或读写方式打开的。的。读取字符的结果可以不向字符变量赋值,如读取字符的结果可以不向字符变量赋值,如fgetc(fp)fgetc(fp);但是;但是读出的字符不能保存。读出的字符不能保存。知识盘点:写字符函数写字符函数fputcfputc()()功能:把一个字符写入指定的文件中。功能:把一个字符写入指定的

13、文件中。调用形式:调用形式:fputc(fputc(字符量,文件指针字符量,文件指针);其中,其中,“字符量字符量”可以是字符常量或变量。可以是字符常量或变量。例如:例如:fputc(a,fp);fputc(a,fp);其意义是把字符其意义是把字符a a写入写入fpfp所指向的文件中。所指向的文件中。使用过程中的几点说明:使用过程中的几点说明:用写或读写方式打开一个已存在的文件时将清除原有的文件内用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,写入的字符从容,写入字符从文件首开始。如需保留原有文件内容,写入的字符从文件末开始存放,必须以追加

14、方式打开。被写入的文件若不存在,则文件末开始存放,必须以追加方式打开。被写入的文件若不存在,则创建该文件。创建该文件。知识盘点:知识盘点:每写入一个字符,文件内部位置指针向后移动一个字节。每写入一个字符,文件内部位置指针向后移动一个字节。fputcfputc函数有返回值,如写入成功则返回写入的字符,否则返函数有返回值,如写入成功则返回写入的字符,否则返回一个回一个EOFEOF。可用此来判断写入是否成功。可用此来判断写入是否成功。应注意文件指针和文件内部的位置指针不是一回事。文件指针是应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件

15、指针指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。是由系统自动设置的。任务三任务三 文件的字符串级读写文件的字符串级读写#includestdio.hmain()FILE*fp;char ch,st20;if(fp=fopen(e10.c,at+)=NULL)printf(Cannot open file!Strike an

16、y key exit!);getch();exit(1);printf(input a string:n);scanf(%s,st);fputs(st,fp);rewind(fp);ch=fgetc(fp);while(ch!=EOF)putchar(ch);ch=fgetc(fp);printf(n);fclose(fp);给上面的程序画出流程图。任务三 文件的字符串级读写1 1观察下面的观察下面的C C程序,完成后面的要求。程序,完成后面的要求。读字符串函数读字符串函数fgetsfgets()()功能:从指定的文件中读一个字符串到字符数组中。功能:从指定的文件中读一个字符串到字符数组中。调

17、用形式:调用形式:fgets(fgets(字符数组名字符数组名,n,n,文件指针文件指针););其中的其中的n n是一个正整数,表示从文件中读出的字符串不超过是一个正整数,表示从文件中读出的字符串不超过 n-1n-1个个字符。在读入的最后一个字符后加上串结束标志字符。在读入的最后一个字符后加上串结束标志00。例如:例如:fgets(str,n,fp);fgets(str,n,fp);其意义是从其意义是从fpfp所指的文件中读出所指的文件中读出n-1n-1个字符送入字符数组个字符送入字符数组strstr中。中。知识盘点:使用使用fgetsfgets函数的说明:函数的说明:在读出在读出n-1n-1

18、个字符之前,如遇到了换行符或个字符之前,如遇到了换行符或EOFEOF,则读出结束。,则读出结束。fgetsfgets函数也有返回值,其返回值是字符数组的首地址。函数也有返回值,其返回值是字符数组的首地址。写字符串函数写字符串函数fputsfputs()()功能:向指定的文件写入一个字符串。功能:向指定的文件写入一个字符串。调用形式:调用形式:fputs(fputs(字符串字符串,文件指针文件指针););其中字符串可以是字符串常量,也可以是字符数组名,或指针变其中字符串可以是字符串常量,也可以是字符数组名,或指针变量。量。例如:例如:fputs(abcdfputs(abcd,fp);fp);其意

19、义是把字符串其意义是把字符串abcdabcd写入写入fpfp所所指的文件之中。指的文件之中。知识盘点:任务四任务四 文件的记录级读写文件的记录级读写#includestdio.h#includestdio.hstruct stustruct stu char name10;char name10;int num;int num;int age;int age;char addr15;char addr15;boya2,boyb2,*pp,*qq;boya2,boyb2,*pp,*qq;main()main()FILE*fp;FILE*fp;char ch;char ch;int i;int i

20、;接下页接下页1 1观察下面的程序,并完成后面的要求。观察下面的程序,并完成后面的要求。任务四 文件的记录级读写pp=boya;pp=boya;qq=boyb;qq=boyb;if(fp=fopen(stu_list,w+)=NULL)if(fp=fopen(stu_list,w+)=NULL)printf(Cannot open file!Strike any key exit!);printf(Cannot open file!Strike any key exit!);getch();getch();exit(1);exit(1);printf(ninput datan);printf(

21、ninput datan);for(i=0;i2;i+,pp+)for(i=0;iname,&pp-num,&pp-age,pp-addr);scanf(%s%d%d%s,pp-name,&pp-num,&pp-age,pp-addr);pp=boya;pp=boya;fwrite(pp,sizeof(struct stu),2,fp);fwrite(pp,sizeof(struct stu),2,fp);接下页接下页任务四 文件的记录级读写rewind(fp);rewind(fp);fread(qq,sizeof(struct stu),2,fp);fread(qq,sizeof(struc

22、t stu),2,fp);printf(nnnametnumber age addrn);printf(nnnametnumber age addrn);for(i=0;i2;i+,qq+)for(i=0;iname,qq-num,qq-age,qq-printf(%st%5d%7d%sn,qq-name,qq-num,qq-age,qq-addr);addr);fclose(fp);fclose(fp);(1 1)给上面的程序画出程序流程图。)给上面的程序画出程序流程图。(2 2)通过流程图,说出程序完成的功能。)通过流程图,说出程序完成的功能。任务四 文件的记录级读写读数据块函数调用的一般

23、形式为:读数据块函数调用的一般形式为:fread(buffer,size,count,fp);fread(buffer,size,count,fp);写数据块函数调用的一般形式为:写数据块函数调用的一般形式为:fwrite(buffer,size,count,fp);fwrite(buffer,size,count,fp);以上两个函数的使用说明:以上两个函数的使用说明:bufferbuffer是一个指针。在是一个指针。在freadfread函数中,它表示存放输入数据的函数中,它表示存放输入数据的首地址;在首地址;在fwritefwrite函数中,它表示存放输出数据的首地址。函数中,它表示存放

24、输出数据的首地址。size size 表示数据块的字节数。表示数据块的字节数。count count 表示要读写的数据块块数。表示要读写的数据块块数。fp fp 表示文件指针。例如:表示文件指针。例如:fread(fa,4,5,fp);fread(fa,4,5,fp);其意义是从其意义是从fpfp所指的文件中,每次读所指的文件中,每次读4 4个字节个字节(一个实数一个实数)送入实送入实数组数组fafa中,连续读中,连续读5 5次,即读次,即读5 5个实数到个实数到fafa中。中。知识盘点:2 2仔细阅读下面的的程序,完成后面的提问。仔细阅读下面的的程序,完成后面的提问。#include#inc

25、ludestruct stustruct stu char name10;char name10;int num;int num;int age;int age;char addr15;char addr15;boya2,boyb2,*pp,*qq;boya2,boyb2,*pp,*qq;main()main()FILE*fp;FILE*fp;接下页接下页char ch;char ch;int i;int i;pp=boya;pp=boya;qq=boyb;qq=boyb;if(fp=fopen(stu_list,wb+)=NULL)if(fp=fopen(stu_list,wb+)=NULL

26、)printf(Cannot open file!Strike any key exit!);printf(Cannot open file!Strike any key exit!);getch();getch();exit(1);exit(1);接下页接下页printf(ninput datan);printf(ninput datan);for(i=0;i2;i+,pp+)for(i=0;iname,&pp-num,&pp-age,pp-addr);scanf(%s%d%d%s,pp-name,&pp-num,&pp-age,pp-addr);pp=boya;pp=boya;for(i=

27、0;i2;i+,pp+)for(i=0;iname,pp-num,pp-fprintf(fp,%s%d%d%sn,pp-name,pp-num,pp-age,pp-addr);age,pp-addr);rewind(fp);rewind(fp);for(i=0;i2;i+,qq+)for(i=0;iname,&qq-num,&qq-age,qq-fscanf(fp,%s%d%d%sn,qq-name,&qq-num,&qq-age,qq-addr);addr);printf(nnnametnumber age addrn);printf(nnnametnumber age addrn);qq=

28、boyb;qq=boyb;for(i=0;i2;i+,qq+)for(i=0;iname,qq-num,qq-age;qq-printf(%st%5d%7d%sn,qq-name,qq-num,qq-age;qq-addr);addr);fclose(fp);fclose(fp);(1 1)分析上面程序的运行过程,并说出上面程序完成的功能。)分析上面程序的运行过程,并说出上面程序完成的功能。(2 2)比较此题中的程序与)比较此题中的程序与1 1题中的程序的不同点。题中的程序的不同点。格式化读写函数格式化读写函数fscanffscanf()和()和fprintffprintf()()调用格式:调

29、用格式:fscanf(fscanf(文件指针文件指针,格式字符串格式字符串,输入表列输入表列);fprintf(fprintf(文件指针文件指针,格式字符串格式字符串,输出表列输出表列);例如:例如:fscanf(fp,%d%s,&i,s);fscanf(fp,%d%s,&i,s);fprintf(fp,%d%c,j,ch);fprintf(fp,%d%c,j,ch);fscanf fscanf函数、函数、fprintffprintf函数与前面使用的函数与前面使用的scanfscanf和和printf printf 函函数的功能相似,都是格式化读写函数。数的功能相似,都是格式化读写函数。两者的

30、区别在于两者的区别在于 fscanf fscanf 函数和函数和fprintffprintf函数的读写对象不是键盘和显示器,而是函数的读写对象不是键盘和显示器,而是磁盘文件。磁盘文件。知识盘点:任务五任务五 文件的随机读写(文件定位)文件的随机读写(文件定位)1 1观察下面的程序,完成后面的要求。观察下面的程序,完成后面的要求。#include#includestruct stustruct stu char name10;char name10;int num;int num;int age;int age;char addr15;char addr15;boy,*qq;boy,*qq;ma

31、in()main()FILE*fp;FILE*fp;char ch;char ch;int i=1;int i=1;qq=&boy;qq=&boy;任务五 文件的随机读写(文件定位)if(fp=fopen(stu_list,rb)=NULL)if(fp=fopen(stu_list,rb)=NULL)printf(Cannot open file!Strike any key printf(Cannot open file!Strike any key exit!);exit!);getch();getch();exit(1);exit(1);rewind(fp);rewind(fp);fse

32、ek(fp,i*sizeof(struct stu),0);fseek(fp,i*sizeof(struct stu),0);fread(qq,sizeof(struct stu),1,fp);fread(qq,sizeof(struct stu),1,fp);printf(nnnametnumber age addrn);printf(nnnametnumber age addrn);printf(%st%5d%7d%sn,qq-name,qq-num,qq-printf(%st%5d%7d%sn,qq-name,qq-num,qq-age,qq-addr);age,qq-addr);(1

33、1)画出流程图帮助理解此程序的运行)画出流程图帮助理解此程序的运行(2 2)通过分析此程序的运行,写出该程序的功能)通过分析此程序的运行,写出该程序的功能 顺序读写是指读写文件只能从头开始,顺序读写各个数据。但在顺序读写是指读写文件只能从头开始,顺序读写各个数据。但在实际问题中常要求只读写文件中某一指定的部分,为了解决这个问题实际问题中常要求只读写文件中某一指定的部分,为了解决这个问题可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读可移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。写称为随机读写。实现随机读写的关键是要按要求移动位置指针,这称为文件的定实现

34、随机读写的关键是要按要求移动位置指针,这称为文件的定位。文件定位的函数主要有位。文件定位的函数主要有2 2个,即个,即 rewind()rewind()函数和函数和fseek()fseek()函数。函数。知识盘点:fseekfseek()函数在使用中的几点说明:()函数在使用中的几点说明:“文件指针文件指针”指向被移动的文件。指向被移动的文件。“位移量位移量”表示移动的字节数,要求位移量是表示移动的字节数,要求位移量是longlong型数据,以型数据,以便在文件长度大于便在文件长度大于64KB 64KB 时不会出错。当用常量表示位移量时,要求时不会出错。当用常量表示位移量时,要求加后缀加后缀“L”L”。“起始点起始点”表示从何处开始计算位移量,规定的起始点有表示从何处开始计算位移量,规定的起始点有3 3种:种:文件首、当前位置和文件尾。文件首、当前位置和文件尾。文件的随机读写在移动位置指针之后,即可用前面介绍的任一种文件的随机读写在移动位置指针之后,即可用前面介绍的任一种读写函数进行读写。由于一般是读写一个数据块,因此常用读写函数进行读写。由于一般是读写一个数据块,因此常用freadfread和和fwritefwrite函数。函数。知识盘点:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁