欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    C语言教程课件ch13.ppt

    • 资源ID:5905802       资源大小:502KB        全文页数:33页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    C语言教程课件ch13.ppt

    第13章 文件 C文件概述 文件类型指针 文件的打开与关闭 文件的读写 文件的定位 出错的检测 文件输入输出小结 烧 忻 仿 致 颁 榆 洁 啦 甚 绸 今 厘 究 释 紫 发 汲 闷 少 称 到 貌 肤 烤 丙 沁 宅 闺 掸 最 讼 肯 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 本章学习目标 理解文本文件和二进制文件的区别; 理解 FILE *fp 文件指针; 能够用函数fopen和fclose打开和关闭文件; 掌握常用的文件读/写函数; 鸯 嘘 焰 淫 啤 淤 憾 磅 藐 螟 斋 心 哨 凤 筑 究 硝 鞭 窄 舞 苯 萎 质 旨 潍 恃 鸳 匿 咨 抖 疲 自 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.1 C文件概述 文件:存储在外部介质上数据的集合,是操作 系统数据管理的单位。 使用数据文件的目的 1、数据文件的改动不引起程序的改动程序与数据分离 。 2、不同程序可以访问同一数据文件中的数据数据共享 。 3、能长期保存程序运行的中间数据或结果数据。 文件分类 v按文件的逻辑结构: l记录文件:由具有一定结构的记录组成(定长和不定长 ) l流式文件:由一个个字符(字节)数据顺序组成 捏 籍 盯 皮 相 踏 径 莆 章 立 找 渤 帚 赫 榷 梯 轧 式 嵌 耽 勒 液 莱 流 男 湛 甭 掐 蝎 诽 牺 乐 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 v按存储介质: l普通文件:存储介质文件(磁盘、磁带等) l设备文件:非存储介质(键盘、显示器、打印机等) v按数据的组织形式: l文本文件: ASCII文件,每个字节存放一个字符的ASCII码 l二进制文件:数据按其在内存中的存储形式原样存放 vC语言的文件是流式文件。 l所谓流就是一系列的字节或者字符,输入输出数据流的开始 和结束仅受程序控制,而不受物理符号(如回车符)的控制 。这种文件称为流式文件。 1000000100111 00010000 00110001 00110000 00110000 00110000 00110000ASCII文件 00100111 00010000二进制文件 支 疵 聘 凿 干 饶 熟 翔 焕 豹 黄 钦 拎 耐 编 呵 导 剂 肠 竞 鹊 弛 尾 健 际 啡 挚 赫 略 阵 蜕 嗽 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 如 int型数10000 0010011100010000 内存存储形式 0010011100010000 二进制形式 0011000100110000001100000011000000110000 ASCII形式 文本文件特点: 存储量大、速度慢、便于对字符操作 二进制文件特点: 存储量小、速度快、便于存放中间结果 烦 姑 檬 蚀 族 茅 箭 懈 较 蒂 妙 另 拌 佑 滴 谋 旁 琳 整 聂 吸 脸 胁 何 歪 鸥 花 猜 蜕 藉 片 诚 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 文件处理方法 v缓冲文件系统:高级文件系统,系统自动为正在 使用的文件开辟内存缓冲区。可减少主机和外部 设备频繁交换数据的次数 v非缓冲文件系统:低级文件系统,由用户在程序 中为每个文件设定缓冲区 磁盘文件 输出文件缓冲区 输入文件缓冲区 程序数据区 a 缓冲文件系统: 缓冲区 指令区 程序 用户数据区 磁盘 非缓冲文件系统: 箍 喷 鸥 寄 赘 研 抗 纂 钠 惺 蘸 铀 猫 醒 申 驾 愈 招 上 瘴 刊 海 怪 窒 列 赴 捷 泣 俩 和 岭 未 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.2 文件类型指针 文件结构体类型FILE v缓冲文件系统为每个正使用的文件在内存开辟文 件信息区 v文件信息用系统定义的名为FILE的结构体描述 vTurbo C在stdio.h文件中有以下的文件类型声明: typedef struct short level; /*缓冲区“满”或“空”的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如无缓冲区不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer; /*数据缓冲区的位置*/ unsigned ar *curp; /*指针,当前的指向*/ unsigned istemp /*临时文件,指示器*/ short token; /*用于有效性检查*/ FILE; 詹 壬 嘉 贰 戮 碴 膀 各 淳 超 瓢 挤 奎 苍 固 必 捆 肠 钟 氟 嫉 刷 氰 种 勇 经 誊 申 颐 崩 擂 稀 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 定义文件类型变量 v存放文件的信息 如:定义FILE类型数组,存放若干文件信息:FILE f5 ; v定义文件型指针变量,指向FILE类型结构体变量,通 过该结构体变量中的文件信息访问文件。 如:FILE *fp; v用法: l文件打开时,系统自动建立文件结构体,并把指向它的指针返 回来,程序通过这个指针获得文件信息,访问文件 如:fp=fopen(a1,r); l文件关闭后,它的文件结构体被释放 经过定义的文件指针,就可以用来指向一个文件! 核 岿 袭 种 惮 欣 陆 绍 孜 鼠 戴 娱 谰 纷 酿 呸 菱 彤 浚 湘 侩 渍 薪 贾 糖 锦 尊 粤 琴 耐 帜 布 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.3 文件的打开与关闭 fp=fopen(d:usermyfile.txt,r); 为什么 Read 前 娱 菩 裹 眺 镁 约 肢 鬃 要 能 试 掀 脐 木 稀 豌 综 涝 暗 赌 阀 镭 粱 汕 昧 柠 销 穆 织 仗 虑 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 v返回值:正常打开,返回指向文件结 构体的指针 ;打开失败,返回 NULL FILE *fp; fp=fopen(“aa.c”,“w”); if(fp=NULL) printf(“File open error!n”); exit(0); /*关闭所有文件终止调用*/ 方式处理方式指定文件不存在文件存在 r 只读 出错 正常 w 只写 建立新文件 原内容丢失 a 追加 建立新文件 在原内容后追加 r+/w+ 读写 出错 正常 r:读方式; w:写方式; a:追加方式; rb/wb/ab:二进制方式; +:既可读又可写 滴 堑 唤 趟 禽 宅 仑 荡 只 氮 咽 描 豫 鼎 球 烩 蚤 征 按 卓 蹋 万 边 明 搁 忿 矫 柒 组 桓 掇 义 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 文件的关闭(fclose函数) v作用:使文件指针变量与文件“脱钩”,释放文件结 构体和文件指针 FILE *fp; fp=fopen(“a.txt”,“r”); fclose(fp); v返回值:用于表示文件是否被正确地关闭,如果 文件顺利关闭,该值为0,否则为-1(EOF)。 l返回值可以用ferror函数测试 痉 羔 实 疯 茧 宽 僳 透 欧 秧 僳 驹 范 詹 藻 伐 盯 秒 另 骸 迫 疽 骤 澳 偿 眺 笑 辩 疫 萌 弧 阎 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.4 文件的读写 文件打开之后,就可以对它进行读与写的操作了。 读写文件中的一个字符 vfputc函数(putc函数) l函数原型:int fputc(int c, FILE *fp) l功能:把一字节代码c写入fp指向的文件中 l返值:正常,返回c;出错,为EOF(-1) vfgetc函数(getc函数) l函数原型:int fgetc(FILE *fp) l功能:从fp指向的文件中读取一字节代码 l返值:返回读到的代码值;读到文件尾或出错为EOF(-1) vfeof函数 l调用方式:feof(fp) l功能:对于二进制文件读取时判断文件是否结束。 l返值:结束-1;反之0。 字符常量或变量字符常量或变量文件指针变量文件指针变量 文件指针变量文件指针变量 攘 梳 殆 绣 纂 购 吼 鞘 乖 打 昂 供 宙 躁 斤 讨 脐 咱 纯 寒 过 正 验 茫 偿 锋 育 评 粗 棠 埃 喇 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 v文件I/O与终端I/O的关系 #define putc(ch,fp) fputc(ch,fp) #define getc(fp) fgetc(fp) #define putchar( c ) fputc(c,stdout) #define getchar( ) fgetc(stdin) 文本文件: FILE *fp; fp=fopen(“a.txt”,“r”); ch=fgetc(fp); while(ch!=EOF) putchar(ch); ch=fgetc(fp); fclose(fp); 二进制或文本文件: FILE *fp; fp=fopen(“a1”,“r”); ch=fgetc(fp); while(!feof(fp) putchar(ch); ch=fgetc(fp); fclose(fp); 催 涛 扎 锦 贱 嗓 焦 撼 乎 撕 升 守 肛 挠 润 荡 庆 野 并 串 碳 六 揭 榜 夹 惮 江 漠 转 豪 岭 簧 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 例13.1 从键盘输入一些字符,逐个把它们送到磁盘上去 ,直到输入一个“#”为止。 #include #include void main() FILE *fp; char ch , filename10; scanf(%s“, filename); if(fp=fopen(filename,w)=NULL) printf(cannot open filen); exit(0); /*终止程序*/ ch=getchar(); /*接收执行scanf时最后输入的回车符*/ ch=getchar(); /*第一个输入的字符被赋给变量ch*/ while(ch!=#) fputc(ch,fp); /*字符被写入filename表示的文件中*/ putchar(ch); /*字符被输出到显示器*/ ch=getchar(); putchar(10); /*向屏幕输出一个换行符*/ fclose(fp); /*关闭文件*/ 悔 付 略 抑 剐 邦 护 法 昨 食 谷 胞 羞 焙 除 困 过 兄 鸦 骚 封 蓝 地 撇 鹅 逗 枣 蜀 歉 离 馁 霉 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 例13.2 将一个磁盘文件中的信息复制到另一个磁盘文件中 。 #include #include void main() FILE *in, *out; char ch,infile10,outfile10; printf(Enter the infile name:n); scanf(%s,infile); /*输入文件的文件名*/ printf(Enter the outfile name:n); scanf(%s,outfile); /*输出文件的文件名*/ if (in = fopen(infile, r)= NULL) printf(Cannot open infile.n);exit(0); if (out = fopen(outfile, w)= NULL) printf(Cannot open outfile.n);exit(0); while (!feof(in) fputc(fgetc(in), out); fclose(in); fclose(out); 二进制文件时:二进制文件时: “ “ rb rb ” ”和和“ “ wbwb ” ” 躇 蔷 冠 逛 蛔 坝 半 训 绸 椿 鞋 迪 晋 渍 翌 曝 腐 党 案 衷 扑 拙 瞳 异 莱 剔 么 咙 熄 缀 奢 宜 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 例 用main参数,在输入命令行时把两个文件名一起输入。 #include #include void main(int argc,char *argv ) FILE *in, *out; char ch; if(argc!=3) printf(You forgot to enter a filenamen); exit(0); if (in = fopen(argv1, r)= NULL) printf(Cannot open infile.n); exit(0); if (out = fopen(argv2, w)= NULL) printf(Cannot open outfile.n); exit(0); while (!feof(in) fputc(fgetc(in), out); fclose(in); fclose(out); 当可执行文件名是:a.exe 输入命令行:C:a file1.c file2.c 则:file1中内容复制到file2文件中 讶 乱 开 捣 险 评 佩 光 沁 躬 汀 邮 讳 尔 伍 跳 啊 带 餐 鲁 眶 缄 前 呛 艺 伍 撇 祟 泞 贯 毡 盲 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 数据块输入输出函数:fread与fwrite v一般调用形式: fread(buffer,size,count,fp ); fwrite(buffer,size,count,fp ); v参数说明: lbuffer: 要读入的数据块的存放首地址或要输出的数据 块的起始地址。 lsize: 每个要读/写的数据块的大小(字节数) lcount: 要读/写的数据块的个数 lfp: 要读/写的文件指针 v返值:成功,返count的值;出错或文件尾,0值 。 vfread与fwrite 一般用于二进制文件的输入/输出 l若文件以二进制形式打开,用fread或fwrite 可读写任何 类型的数据。如: fread(f, 4, 2, fp) 衍 接 染 色 弗 婉 霜 噎 歹 吵 谤 绢 技 喀 归 捍 兰 争 薛 试 暂 菩 骂 凳 氮 皮 郴 蚌 盒 缚 兆 宜 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 #include #define SIZE 4 struct student_type char name10; int num; int age; char addr15; studSIZE; void main() int i; for(i=0;i<SIZE;i+) scanf(%s%d%d%s,studi.name, save(); display(); 例13.3 从键盘输入4个学生 的数据,然后转存 到磁盘上,并在屏 幕上显示磁盘文件 的内容。 涎 缕 恩 互 褂 荒 框 鞠 儿 原 返 传 海 丝 牙 攘 为 往 炬 坏 醒 显 拜 呐 典 二 舒 褐 坷 诞 果 个 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 void save() FILE *fp; int i; if(fp=fopen(d:stu_list,wb)=NULL) printf(cannot open filen); return; for(i=0;i<SIZE;i+) if(fwrite( fclose(fp); 文件必须是以“二进制”打开的 void display() FILE *fp; int i; if(fp=fopen(d:stu_list,rb)=NULL) printf(cannot open filen); return; for(i=0;i<SIZE;i+) fread( printf(%-10s %4d %4d %-15sn,studi.name, studi.num,studi.age,studi.addr); fclose(fp); 曾 然 等 慈 殊 监 雷 篡 募 翻 钝 摔 野 扭 拳 嘴 剪 骚 倍 轰 晴 禁 雷 淀 剐 声 惜 图 褐 咙 莹 幸 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 例13.3b 将4个学生的数据,从磁盘文件stu_dat调入,然后输出 到stu_list文件中,并在屏幕上显示磁盘文件的内容。 #include #define SIZE 4 struct student_type char name10; int num; int age; char addr15; studSIZE; main() load(); save(); display(); void load() FILE *fp; int i; if(fp=fopen(d:stu_dat,rb)=NULL) printf(cannot open filen); return; for(i=0;i<SIZE;i+) if( fread(retun; printf(file read errorn); fclose(fp); 掏 居 证 呛 碧 徘 讳 群 板 蝎 膜 哺 道 型 泻 蜒 朱 锅 冠 页 月 泳 爬 籽 瞻 之 会 班 阔 扣 釜 麻 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 按指定格式读写文件的函数:fprintf和fscanf v一般调用格式:fscanf(fp,格式字符串,输入列表); fprintf(fp,格式字符串,输出列表); v返值:成功,返回I/O的个数;出错或文件尾,返回EOF v由于输入输出时要进行ASCII码和二进制形式的转 换,费时较多。 fscanf( fp,“%d,%f”, /*若文件中有 3 , 4.5 ,则将3读出送入 i , 4.5读出送入t*/ fprintf(fp,“%d,%6.2f”,i,t); /*将i和t按 %d, %6.2f 格式写入到 fp文件*/ 龋 孪 箩 鼻 亿 矾 电 天 胶 跑 尖 构 现 墨 父 猪 蝇 搜 倚 掣 凑 贿 抿 呸 镭 机 骑 瞒 铣 条 而 粉 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 void save() FILE *fp; int i; if(fp=fopen(d:stu_list,w)=NULL) printf(cannot open filen); return; for(i=0;i<SIZE;i+) fprintf(fp,%s %d %d %s,studi.name, studi.num,studi.age,studi.addr); fclose(fp); void display() FILE *fp; int i; if(fp=fopen(d:stu_list,r)=NULL) printf(cannot open filen); return; for(i=0;i<SIZE;i+) fscanf(fp,%s %d %d %s,studi.name, studi.num,studi.age,studi.addr); printf(%-10s %4d %4d %-15sn,studi.name, studi.num,studi.age,studi.addr); fclose(fp); 赡 海 渤 诊 坊 蔫 乐 析 彬 誊 症 攻 书 袜 媳 巢 具 矮 切 却 仕 渭 坚 拇 岭 医 刚 售 刀 郊 鹿 雹 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 其它读写函数 1. putw和getw函数 v作用:以二进制形式,对磁盘文件读写一个 int 型的整数,2个字节。 v返值:成功:所写的整数值;失败:EOF。 如:putw(10,fp); i=getw(fp); 2. fgets 和fputs函数 v形式:fgets(str,n,fp); (str字符数组,n-1个字符 ) fputs(字符串,fp); (0不输出) v作用:从fp指向的文件读/写一个字符串 v返值: lfgets正常时返回字符串的首地址;出错或文件尾,NULL lfputs正常时返回写入的最后一个字符;出错为EOF 房 跨 戚 家 盒 孜 胡 听 貉 埂 缄 阻 芭 置 毒 团 犁 楚 荤 孰 美 便 钳 境 拿 冰 保 饲 矩 伟 戍 菌 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 例 从键盘读入字符串存入文件,再从文件读回显示 #include void main() FILE *fp; char string81; if(fp=fopen(file.txt,w)=NULL) printf(cannt open file);exit(0); while(strlen(gets(string)0) fputs(string,fp); fputs(n,fp); fclose(fp); if(fp=fopen(file.txt,r)=NULL) printf(cannt open file);exit(0); while(fgets(string,81,fp)!=NULL) fputs(string,stdout); fclose(fp); 呜 承 彦 诵 沂 凝 魏 桂 瓣 译 混 九 测 摄 滋 从 吱 正 豺 介 搜 池 你 狮 决 吊 持 墅 光 怜 除 哪 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.5 文件的定位 几个概念 v文件位置指针-指向当前读写位置的指针,具 体位置由文件打开方式确定。 l“r”“w”:指向文件头 l“a”:指向文件尾 v读写方式 l顺序读写:位置指针按字节位置顺序移动。 l随机读写:位置指针按需要移动到任意位置。 件 编 椒 席 联 撮 涕 恿 闭 京 降 屡 例 蚊 啦 蒜 般 貉 她 瞳 逮 慢 迈 顾 歇 匆 扇 豹 泡 毫 萌 头 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 rewind函数 v函数原型: void rewind(FILE *fp) v功能:重置文件位置指针到文件开头 v返值:无 例13.4 对一个磁盘文件进行显示和复制两次操作 #include void main() FILE *fp1,*fp2; fp1=fopen(c:tcuserch12_4.c,r); fp2=fopen(d:tcuserch12_41.c,w); while(!feof(fp1) putchar(getc(fp1); rewind(fp1); while(!feof(fp1) putc(getc(fp1),fp2); fclose(fp1); fclose(fp2); 廊 微 拿 圣 蟹 至 瓮 昭 途 啪 伯 藏 拾 驻 推 赦 憾 皮 档 账 璃 膛 玲 溅 替 前 尤 逗 景 玖 扣 既 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 fseek函数和随机读写 v调用形式:fseek(文件类型指针,位移量,起始点) v功能:改变文件位置指针的位置 v返值:成功,返回0;失败,返回非0值 位移量(以起始点为基点,移动的字节数) 0 向后移动,<0 向前移动 起始点 文件开始 SEEK_SET 0 文件当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2 例 fseek(fp,100L,0); fseek(fp,50L,1); fseek(fp,-10L,2); 例13.5 文件内存有10个学生数据,将单数学生数 据输入计算机并在屏幕上显示 void main() FILE *fp; int i; if(fp=fopen(stud_dat,rb)=NULL) printf(cannot open filen); exit(0); for(i=0;i<10;i+=2) fseek(fp,i*sizeof(struct student_type),0); fread( printf(%s %d %d %cn,studi.name,studi.num, studi.age,studi.sex); fclose(fp); #include #include struct student_type char name10; int num; int age; char sex; stud10; 群 骋 怎 恳 京 印 拎 迭 绪 浸 刑 叙 布 它 屹 差 徒 媳 阮 奠 晶 详 虐 燕 澳 耐 焕 犬 炼 论 盖 书 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 ftell函数 v函数原型: long ftell(FILE *fp) v功能:得到流式文件中位置指针当前位置(用相对 于文件开头的位移量表示) v返值:返回当前位置指针位置;失败,返回-1L 例 求文件长度 #includestdio.h main() FILE *fp; char filename80; long length; gets(filename); fp=fopen(filename,rb); if(fp=NULL) printf(file not found!n); else fseek(fp,0L,SEEK_END); length=ftell(fp); printf(Length of File is %1d bytesn,length); fclose(fp); 唉 涵 狱 尽 斡 慑 胜 减 隆 治 操 徘 溯 湍 疽 蛆 浚 挝 遭 悉 耙 嚏 梭 虑 灾 兜 虏 躺 酿 赂 糊 筛 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.6 出错的检测 ferror函数:测试文件是否出现错误 v调用形式: ferror(fp); v返值:未出错,0;出错,非0 v说明 l每次调用文件输入输出函数,均产生一个新的ferror函 数值,所以应及时测试 lfopen打开文件时,ferror函数初值自动置为0 clearerr函数 v调用形式: clearerr(fp); v功能:使文件错误标志置为0,无返值。 v说明:出错后,错误标志一直保留,直到对同一 文件调clearerr(fp)或rewind或任何其它一个输入 输出函数 这 捷 活 卒 个 迷 与 天 毒 玛 久 玫 祭 枝 挂 希 宜 晓 蓬 旦 乔 籽 摊 配 缔 厨 膨 幼 脯 践 淫 拟 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 例 ferror()与clearerr()举例 #include int main(void) FILE *stream; stream = fopen(DUMMY.FIL, w); getc(stream); if (ferror(stream) printf(Error reading from DUMMY.FILn); clearerr(stream); if(!ferror(stream) printf(Error indicator cleared!); fclose(stream); return 0; 此 耸 揍 毫 访 幅 岿 谋 懈 载 埋 谩 频 仙 牟 馆 越 拦 漏 颓 挎 童 竖 腹 券 第 镑 购 粥 娱 疹 瑶 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.7 文件输入输出小结 v在使用文件时,首先要定义一个文件指针:FILE *fp;然后通过该指针来操作相应的文件; v通过fopen这个函数,使文件指针fp和相应的文件建 立了联系,通过fclose函数将fp和文件的联系切断; v文件可以以文本的方式打开(默认或“t”),也可以以 二进制方式打开(“b”); v如果以一次一个字符的方式处理文件,需要用fgetc 或者fputc函数; v如果以一次一行的方式处理文件,可以用函数fgets 或者fputs; v如果以一次一个结构体的方式处理文件,可以用函 数fread和fwrite(多为二进制文件); vfscanf和fprintf函数使用很广泛,应重点掌握。 嫡 报 母 虽 难 镐 蠢 节 耙 辛 槽 升 帛 检 跟 弥 隅 矮 原 兔 氯 承 桃 囤 胶 吻 跋 昭 榨 懊 挣 闹 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 本章作业 13.4 13.6 13.7 13.12 上机: 实验12 避 崖 嫉 唆 纤 盂 努 河 邹 蛮 阀 破 醒 夫 茨 勒 匝 篓 遂 极 求 日 蔷 阻 贤 靖 琳 葵 橙 澎 鳖 吻 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3 13.1 概述 在函数调用过程中,直接或间接的调用自身 。 递归调用方式 v直接递归调用:在函数体内又调用自身 崩 挞 什 殉 苛 揪 窿 形 排 耻 鞍 疵 敌 昂 盒 茬 吹 殴 塞 地 刹 舀 乏 末 圈 恨 铜 莉 咐 盈 分 蒸 C 语 言 教 程 课 件 c h 1 3 C 语 言 教 程 课 件 c h 1 3

    注意事项

    本文(C语言教程课件ch13.ppt)为本站会员(京东小超市)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开