欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (中职)C语言程序设计模块十二课件.pptx

    • 资源ID:71827334       资源大小:2.07MB        全文页数:43页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (中职)C语言程序设计模块十二课件.pptx

    (中中职职)C语语言程序言程序设计设计模模块块十二十二课课件件LOGO文件模块1212.1文件的概念具体说来,文件是一组相关数据的有序集合,这个数据集有一个名称,称为文件名。从用户的角度来说,可以分为普通文件和设备文件;从文件编码来说,可以分为ASCII码文件和二进制码文件。我们日常所说的文件指的是普通文件。(1)(2)(3)12.1文件的概念12.1.1普通文件和设备文件1.普通文件将数据以合法名称(文件名)保存到存储介质(如HDD、U盘等),就是普通文件普通文件名由两部分构成:文件名.扩展名C语言程序文件可包括以下三种文件:源文件(.c);目标文件(.obj);可执行文件(.exe)。12.1文件的概念12.1.1普通文件和设备文件2.设备文件设备文件指的是与主机相连的各种外部设备。在计算机系统中,操作系统把外部设备当作文件来管理。(1)显示器是标准输出文件,对应的函数:printf(),putchar(),puts()。(2)键盘是标准输入文件,对应的函数:scanf(),getchar(),gets()。12.1文件的概念12.1.2ASCII码文件和二进制码文件1.ASCII码文件(1)ASCII英文为America standard code information interchange,即美国标准信息交换码。在存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为(每个字符1 B,共占4 B内存长度):(2)ASCII码文件按字符显示,能读懂。C程序源文件就是ASCII码文件。(1)(2)(3)12.1文件的概念12.1.2ASCII码文件和二进制码文件2.二进制码文件二进制码文件是按二进制的编码方式来存放文件的。例如,数字5678为 int型,占2个字节(2 B),其存储形式为0001011000101111。二进制码文件虽然能在屏幕上显示,但是其内容却无法读懂。C系统在处理这些文件时,并不区分类型,都看成字符流,按字节进行处理。C系统按字节处理二进制文件,在输入/输出字符流时,其开始和结束只由程序控制而不受其他物理符号(如回车符)的控制。因此,把二进制码文件也称为流式文件。12.2文 件 指 针文件指针顾名思义就是文件类型的指针。C语言在使用文件时,系统会在内存中为每一个文件开辟一块区域,用来存放文件的有关信息,如文件状态、文件名以及文件当前的位置等。这些信息保存在一个结构体变量中,结构体的名称为FILE。因此,文件指针的定义方式为:FILE*文件指针变量名;注意FILE只能是大写。例如:FILE*fp;定义了一个文件指针fp。至于FILE结构的细节,编写程序时不必关心。在C语言中,文件操作都是由库函数来完成的。本节介绍C语言的文件操作库函数。C语言常见的文件操作库函数有:fopen(),fclose(),fgetc(),fputc(),fgets(),fputs(),fscanf(),fprintf(),fseek(),feof()等。这些函数前面都带一个字母f,其意即为文件操作函数。它们与我们前面所学的函数不同的是:操作对象不同它们的操作对象是磁盘文件。12.3文件操作函数(1)fclose()。文件关闭函数。使用方法:fclose(文件指针名);(2)fgetc()。文件字符读取函数(读取单字符)。使用方法:字符变量=fgetc(文件指针);(3)fputc()。文件字符写入函数(写入单字符到文件)。使用方法:fputc(字符量或字符变量,文件指针);(4)rewind(文件指针)。将文件位置指针返回文件头。(5)12.3文件操作函数1.功能和使用方法fopen()。文件打开函数。使用方法:文件指针=fopen(文件名,使用方式);12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数2.文件使用方式的符号和意义。文件使用方式的符号和意义见表12-1。表12-1文件使用方式的符号和意义12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数示例1:文件打开和文件字符的读取(读者可在相应位置建立相应的文件测试)。#include int main()FILE*fp;char ch;if(fp=fopen(d:ysms2.c,rt)=NULL)/*通过文件指针打开d:ysms2.c的源文件,以“rt”方式打开,两个是转义字符,表示其后是文件或文件夹,如果返回的指针值为NULL(为空),表示不能打开上述文件*/printf(Can not open file!Strike any key exit!);getchar();/*从键盘输入一个字符,但不在屏幕上显示,在这里其作用为等待*/exit(1);/*上面按键后退出*/3.应用举例12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数ch=fgetc(fp);/*从fp打开的文件中读取第一个字符并送入字符变量ch中,文件内部有一个位置指针,打开文件时该位置指针总指向第一个字节,每用fgetc()函数读取一个字符,该位置指针则后移一个字节,即位置指针总指向当前读写字节*/while(ch!=EOF)/*EOF为文件结束标志。每一个文件都有文件结束标志EOF*/putchar(ch);/*输出该字符*/ch=fgetc(fp);/*从当前位置读取字符并保存到字符变量ch中*/*while循环将使文件名为2的所有内容都显示出来*/fclose(fp);/*关闭文件,其实就是断开指针*/12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数说明:(1)位置指针:文件内部均有位置指针。文件打开时,位置指针总指向第1个字节(字符),用fgetc()函数读取一个字符,位置指针便自动指向下一个字节。位置指针和文件指针不同,文件指针是指向整个文件的,需要定义;而位置指针是系统自动设置的,无需定义。(2)文件打开错误时,返回文件指针值为NULL。(3)文件正常关闭,fclose()函数返回值为0;关闭不正常,返回值为非0。(4)若不把fgetc()读取的字符保存到变量,则字符不会保存到内存。(5)EOF为文件结束标志。每一个文件都有一个EOF。12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数#include int main()FILE*fp;char ch;if(fp=fopen(2,wt+)=NULL)/*在当前目录打开名为2的文件,若没有则以读写方式建立一个名为2的文件*/printf(Open file fail!Press any key exit!);getchar();exit(1);printf(Input a string:n);ch=getchar();示例2(读者在相应位置自建文件以便测试):12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数while(ch!=n)fputc(ch,fp);/*把字符变量ch中的字符写入文件指针fp所指的文件中,即名为2的文件中*/ch=getchar();rewind(fp);/*rewind函数:用于把位置指针移到文件头。用法:rewind(文件指针)*/ch=fgetc(fp);while(ch!=EOF)putchar(ch);ch=fgetc(fp);/*继续从文件中读取字符*/printf(n);fclose(fp);12.3.1fopen()、fclose()、fgetc()、fputc()和rewind()函数12.3文件操作函数1.功能与用法(1)fgets()从文件读取字符串函数。使用方法:fgets(字符数组名,n,文件指针);意为从文件指针所指文件中读取n-1个字符(实际就是字符串)保存到字符数组中。注意:第n个位置会自动赋给结尾符0。(2)fputs()向文件写入字符串函数。使用方法:fputs(字符串,文件指针);意为把字符串常量写入文件指针所指的文件中。注意:字符串可以是“字符串常量”“指针变量”或“字符数组名”。12.3.2fgets()和fputs()函数12.3文件操作函数2.应用举例示例1(读者在相应位置自建文件以便测试):12.3.2fgets()和fputs()函数#include int main()FILE*fp,*fm;char ch1,str112;char ch2,str212;if(fp=fopen(f:study.txt,r)=NULL)printf(Open file fail!);getchar();exit(1);/*输出原文件内容*/ch1=fgetc(fp);12.3文件操作函数12.3.2fgets()和fputs()函数while(ch1!=EOF)putchar(ch1);ch1=fgetc(fp);printf(n-n);rewind(fp);/*文件指针返回文件头*/*测试fgets()函数*/fgets(str1,12,fp);printf(%s,str1);printf(n-n);/*新建test.c文件*/fm=fopen(d:test.c,wt+);if(fm=NULL)printf(Open file fail!);getchar();exit(1);12.3文件操作函数12.3.2fgets()和fputs()函数printf(Input string:n);gets(str2);fputs(str2,fm);/*把刚输入的字符串写入文件fm中*/rewind(fm);/*文件指针返回文件头*/*输出文件fm的内容*/ch2=fgetc(fm);while(ch2!=EOF)putchar(ch2);ch2=fgetc(fm);fclose(fp);fclose(fm);12.3文件操作函数12.3.2fgets()和fputs()函数示例2(读者在相应位置自建文件以便测试):#include main()FILE*fp,*fm;char ch1,str250;fp=fopen(d:1.c,rt);if(fp=NULL)printf(Open file fail);getchar();exit(1);fgets(str2,20,fp);/*将文件1.c中的前19个字符(串)读写到数组str2中*/puts(str2);/*输出这个串*/fm=fopen(d:2.c,wt+);/*在D盘新建一个名为2的文件*/fputs(str2,fm);/*把str2的串读写到文件2中*/12.3文件操作函数12.3.2fgets()和fputs()函数rewind(fm);/*位置指针返回文件头*/fm=fopen(d:2.c,at+);/*以追加方式重新打开文件2*/if(fm=NULL)printf(Open file fail);getchar();exit(1);fputs(for your future,fm);/*因为文件是以追加方式打开的,所以此处是把串for your future读写到文件2的末尾*/rewind(fm);ch1=fgetc(fm);while(ch1!=EOF)/*输出文件2的内容*/putchar(ch1);ch1=fgetc(fm);fclose(fp);12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数(1)fprintf()函数。使用方法:fprintf(文件指针,格式串,输出列表);意为将输出列表按指定的格式串写入文件指针所指文件中。注意:数据是从内存到磁盘(外存储器),故称为输出列表。(2)fscanf()函数。使用方法:fscanf(文件指针,格式串,输入列表);意为将文件内容按读取到输入列表所指向的内存中。注意:数据是从磁盘(外存储器)到内存中,故称为输入列表。(3)fseek()函数。使用方法:fseek(文件指针,位移量,起始点);意为把位置指针(注意不是文件指针)从起始点处向前/后移动“位移量”字节。12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数起始点。起始点名称代码及含义见表12-2。表12-2起始点名称、代码及含义位移量。位移量为long型,为正,表示从起始点向文件尾方向移动;为负,表示从起始点向文件头方向移动。12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数(4)feof()函数。使用方法:feof(文件指针);功能是:检测字符流上的文件结束标志EOF。若文件结束,则返回非0值(结束为真);若文件未结束,则返回0值(结束为假)。例如:feof(fp);(5)ftell()函数。使用方法:ftell(文件指针);功能是用于得到文件位置指针当前位置相对于文件首的偏移字节数。返回值为long int型。一般用于读取文件的长度。12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数2.应用举例示例1:#include FILE*fpp;int main(void)long l;float fp;char s81;char c;fpp=fopen(study,w+);/*在当前目录下创建名为study的文本文件*/if(fpp=NULL)printf(The file fscanf.out was not openedn);elsefprintf(fpp,%s%ld%f%c,a-string,65000,3.14159,x);/*设置文件起始点*/12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数fseek(fpp,0L,SEEK_SET);/*从文件中读写回数据*/fscanf(fpp,%s,s);/*从文件study中读取的字符串保存到字符数组s所指向的内存中*/fscanf(fpp,%ld,&l);/*从文件study中读取的长整型数据放在变量l所指向的内存中*/fscanf(fpp,%f,&fp);fscanf(fpp,%c,&c);/*输出数据*/printf(%sn,s);printf(%ldn,l);printf(%fn,fp);printf(%cn,c);fclose(fpp);12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数#include main()FILE*fp;char str1000;long count=0;fp=fopen(test.c,w+);/*创建文件名*/gets(str);fputs(str,fp);/*把字符数组str的内容写到文件中*/rewind(fp);/*注:必须把位置指针返回文件头*/fp=fopen(test.c,r);/*以只读方式重新打开文件*/示例2:在当前目录下创建一个名为“test.c”的文件,并从键盘给文件写入数据,然后统计字符数并输出。12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数while(!feof(fp)/*循环条件:文件指针未到文件尾*/fgetc(fp);count+;printf(count=%ld,count);fclose(fp);注意:统计的字符数包括结尾符0,如输入abcd,count将等于5。12.3文件操作函数12.3.3fprintf()、fscanf()、fseek()、feof()和ftell()函数示例3:读取文件长度,假设在d盘下有文件study.txt,内容为“good”,读取该文件长度。#include int main()FILE*fp;long length;fp=fopen(d:study.txt,r);fseek(fp,0,SEEK_END);length=ftell(fp);fclose(fp);printf(length=%ldn,length);输出结果:length=4ftell在读取时,空格、回车等任何操作都视作一个字符予以计算。12.3文件操作函数12.3.4fread()、fwrite()、ferror()和clearerr()函数1.功能和用法(1)fread()函数。使用方法:fread(buf,size,count,fp);意为从文件fp中读取count个size大小的数据存放到数组buf中。说明:fread()函数一般用于读取二进制文件内容到内存中。buf:指针或数组名,是读入数据的存放地址。size:一次要读写的字节数。count:要进行读写多少个size字节的数据项。例如:fread(buf,strlen(str)+1,1,fp);意为从文件fp中一次性读取strlen(str)+1个字节的数据到数组buf中。12.3文件操作函数12.3.4fread()、fwrite()、ferror()和clearerr()函数(2)fwrite()函数。使用方法:fwrite(buf,size,count,fp);意为从数组buf首地址处读取count个size大小的数据到文件fp中。说明:fwrite()函数一般用于将数据读写到二进制文件中。buf:指针或数组名,是输出数据的起始地址。size:一次要读写的字节数。count:要进行读写多少个size字节的数据项。例如:fwrite(str,1,strlen(str)+1,fp);意为从字符数组str的起始处按每次1 B标准读取strlen(str)+1个字节到文件fp中。12.3文件操作函数12.3.4fread()、fwrite()、ferror()和clearerr()函数(3)ferror()函数。使用方法:ferror(文件指针)意为检查函数调用(如 putc,getc,fread,fwrite等)是否出错。如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。对同一个文件,每一次调用输入/输出函数,均产生一个新的ferror函数值,因此,应当在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。12.3文件操作函数12.3.4fread()、fwrite()、ferror()和clearerr()函数使用方法:clearerr(文件指针);意为清除文件状态错误标志。当文件操作出错后,文件状态标志为非0值,如果要继续操作文件,必须清除此错误标志方可进行。例如,文件指针到达文件末尾时会产生文件结束标志EOF,必须执行此函数后才可以继续对文件进行操作。(4)clearerr()函数。12.3文件操作函数12.3.4fread()、fwrite()、ferror()和clearerr()函数2.应用举例示例1:从内存到文件再到内存。#include#include int main()FILE*fp;char str=this is a test,buf20;if(fp=fopen(a.txt,w+)=NULL)printf(Cannot open outputfile.n);return 0;fwrite(str,1,strlen(str)+1,fp);/*把数组str中的内容写到文件fp中*/fseek(fp,0,0);fread(buf,strlen(str)+1,1,fp);/*把文件fp中的内容全部读取存入数据buf中*/printf(%sn,buf);fclose(fp);12.3文件操作函数12.3.4fread()、fwrite()、ferror()和clearerr()函数示例2:文件读错示例,ferror(fp)返回非0值,输出错误提示。#include int main()FILE*fp;fp=fopen(11.txt,w);getc(fp);if(ferror(fp)printf(Error reading from 11.txtn);clearerr(fp);fclose(fp);12.3文件操作函数12.3.5文件分隔符写入文件时,空格、t、n可做分隔符,r不能做分隔符。例如:#include main()FILE*fp;int i=20,j=30,k,n=0;fp=fopen(d1.dat,w);fprintf(fp,%dn,i);/*此处把20写入文件中,并加上分隔符n*/fprintf(fp,%d,j);/*此处把30写入文件中,紧跟在上面的分隔符后面*/fclose(fp);fp=fopen(d1.dat,r);fscanf(fp,%d%d,&k,&n);/*从文件中把20、30分别写入变量k和n所指内存中。若上面没有写入分隔符,则将把2030写入k,n为原值0*/printf(k=%d n=%dn,k,n);/*输出k=20 n=30*/fclose(fp);12.4argc和argv参数12.4.1argc和argv的固定写法main(int argc,char*argv)或者main(int argc,char*argv)说明:(1)argc用于记录输入的参数个数,为int型。(2)*argv为字符指针数组,用于保存参数。参数是文件名,也是字符串。每个元素代表1个参数,其中argv0代表要执行的文件名,如要执行的文件名为“ex.exe”,则argv0就代表“ex”。12.4argc和argv参数12.4.1argc和argv的固定写法#include int main(int argc,char*argv)int i,len=0;for(i=0;iargc;i+)printf(Argument%d is:%sn,i,argvi);/*显示每一个元素的名称*/for(i=1;iex.exe abc good ok finish将输出以下内容:Argument 0 is:d:ex.exeArgument 1 is:abcArgument 2 is:goodArgument 3 is:okArgument 4 is:finishlen=15注意:命令行参数的最大长度为128个字符(包括参数间空隔)。12.4argc和argv参数12.4.2argc和argv参数的应用示例【例12-2】通过命令行参数将任意多个文本文件连接到第2个命令行参数所命名的文件中,文件中每行字符的个数小于128个字符。#include#define B 128int main(int argc,char*argv)FILE*fp,*fg;char sB;if(argc2)/*如果只有一个文件*/printf(Havent cat filename);return;/*返回命令提示符*/if(fp=fopen(*+argv,a+)=NULL)/*以追加方式打开文件argv1所指向的文件*/printf(Cant open file%s,*argv);return;12.4argc和argv参数12.4.2argc和argv参数的应用示例argc=argc-2;/*总的参数个数减去第1个(可执行文件名)和第2个(所指文件用于被追加)*/while(argc-)/*参数个数逐渐递减*/if(fg=fopen(*+argv,r)=NULL)printf(Cant open file%s,*argv);return;while(feof(fg)fputs(fgets(s,B,fg),fp);/*从fg所指文件中读取127个字符保存到数组s中,再把这个串写到fp所指的文件中,则每行最多写127个字符(包括空格)。一个文件写完毕,再执行上面的外while循环写第2个文件,直到文件写完毕*/fclose(fg);/*写完一个文件关闭一个文件*/fclose(fp);/*最后关闭被写入的这个文件*/LOGO

    注意事项

    本文((中职)C语言程序设计模块十二课件.pptx)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开