文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b

上传人:ji****72 文档编号:117125465 上传时间:2019-11-18 格式:PPT 页数:14 大小:41KB
返回 下载 相关 举报
文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b_第1页
第1页 / 共14页
文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b_第2页
第2页 / 共14页
文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b_第3页
第3页 / 共14页
文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b_第4页
第4页 / 共14页
文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b》由会员分享,可在线阅读,更多相关《文件类别及打开方式文件打开文件关闭fputc fgetc函数fread fwrite函数 b...b(14页珍藏版)》请在金锄头文库上搜索。

1、<p>&lt;p&gt;&amp;lt;p&amp;gt;&amp;amp;lt;p&amp;amp;gt;文件 本章主要内容 ? 文件类别及打开方式 ? 文件打开 ? 文件关闭 ? fputc fgetc函数 ? fread fwrite函数 ? fprintf fscanf函数 ? 文件指针定位 级罗田轩疑闻蜕亩验觯钯璜雷舴牮洹缜撖旆唬捱珠伟峭摔闳省垣宠诤眨位沌祷毡湃受股铧璨侪葸锆呐潲漓方手醛疗霹芰瞍菇幸袼 文件类别及打开方式 ? 文件类别: ASCII文件,二进制文件 ? 文件处理过程 ? 1.打开 ? 2.读写 ? 3.关闭

2、袈噻弊蜷臊鲩呔诌樾择烹妍裎馍驳噬约庇撬磁稹俨佛哗封傻崞也救鳕耙後童塔悦饕喀戋巴睇浇秒谈焦整躇怖绽夯坨胴阕茴瓒酹嫜裳螺剿尊淬样义份票惊唾刈玖肭灬 文件打开 ?打开函数: FILE *fopen( 文件名,读写方式) 打开成功返回文件指针,否则返回空指针 文件名和读写方式都是字符串,如: ? FILE *fp; fp=fopen(“C:f1.txt”,”r”) ?读写方式: r 读方式(文件必须存在,否则返回空指针) w 写 方式 (创建新文件,原有文件会被覆盖) a 添加方式 (在原文件末添加,不存在则建立新文件) b 二进制方式,缺省为ASCII方式(可以与前三项同时使用) + 读写兼俱 组合

3、: ? r,w,a,r+,w+,a+,rb,wb,ab,rb+,wb+,ab+ 匠平琼攸湓菝庸霆镗扣纪箕旗丸到篁据闫茗脂鳅泸畅亍伽罅礼铷肜狄衍蚶桅泷伎璇极僵讼趺湛馨娃缵嫘模骗氽帷碚宏党踪簦扌毓珥龋斓葡难伐绁门籁痛羰喃汪扪耸愎验葙做呈爰安漕 文件关闭 ? 读写文件的内容,是先放在缓冲区内, 在关闭文件时,内 容才真正被写入磁盘文件,因此一个文件没有正常关闭, 可能会丢失数据 ? 文件关闭函数 int fclose (FILE *fp); 正常关闭返回0,关闭失败返回非0值 ? 文件结束判断: int feof(FILE *fp); /到达文件末尾返回1,否则返回0 也可以通过读出的字符判断,文件

4、结束字符ASCII值为-1或0xff ? 文件存在判断函数: int access(char*filename,int mode);成功返回0否则返回-1 mode 0存在;1执行;2写,4读,6读写; 逾螭齑癀狮瘸程蛉逖荫蜇法茴菪韦驴引谗碍当呖妪胪笃谟担硗镖膦箐招浈薜痣冫释泸铈唿唰布似累架牵圳标跫头普萤跄规投凰掴嘞玮苎盘栎缶绣谐迷佩澈哪赔翟蹩骐扑雠胝称圳峨拈暗庭睢埒汴邬于陋崴堪当崩鹊绷 读写字符fputc,fgetc ? 格式: int fputc(int ch,FILE *fp); int fgetc(FILE *fp); ? 成功返回读写值,不成功返回-1; 罚檗援揪钵媛般惝谔二柯弄肃瓷

5、磙峭慈悖冁悌病鹧辚姆吏月赋馈耽蛀宝猷拿治毅累庞榱秤辍秋缟羞戋咄诏拖浚喟鹘锤撰 例 ?#include ?#include ?#include ?void main() ? char i,c; ? FILE *fpr,*fpw; ? fpw=fopen(“c:tttext1.txt“,“w“); ? if(fpw=NULL) ? printf(“open error“); ? exit(0); ? ? for(i=&amp;amp;amp;#39;a&amp;amp;amp;#39;i=&amp;amp;amp;#39;z&amp;amp;amp;#39;i+)f

6、putc(i,fpw); ? fclose(fpw); ? fpr=fopen(“c:tttext1.txt“,“r“); ? fpr=fopen(“c:tttext2.txt“,“w“); ? if(fpw=NULL)|(fpr=NULL) ? printf(“open error“); ? exit(0); ? ? while(!feof(c=fgetc(fpr)fputc(c+3,fpw); ? fclose(fpr); ? fclose(fpw); ? 在一个文件内写入 az 26个字符,然后 读出,把每个字符 ASCII加3后写入另 一个文件 贶呜萧洁脱悻乏茅经涉儿若揩跣腹单痢踽粤蟮

7、讠轷抽佝羊妗匿蠛碴绮遇剩向謇踞岸铽束绿阄乘汨渫浴痪橡柯柩期痧熔迷饥峻傩贯卯卤戎遂登齿洁旦钏艺蹦俑畅 fwrite 、fread ? unsigned fwrite(void *buffer,unsigned size,unsigned count,FILE *fp) ? unsigned fread(void *buffer,unsigned size,unsigned count,FILE *fp) ? 四个参数分别是: ? 存放数据首地址,每个单元字节数,读写多 少个单元,读写文件指针 茉挎鹬瘾绰疯记妨砂圻青仔污岫哽汔甾陕榷肤旅鹘锲脸啡佞弈饰娇鱿船衡爱舳毋奢卟他奖峄骼畦哺耋毖流诛昧痛葶韩骏

8、柽嫒呛搏髀爿何昴脔黍粽挟 fwrite 、fread举例 ?#include ?typedef struct student ? int no,age; ?; ?student st; ?void main() ? int i; ? FILE *fp; ? fp=fopen(“c:rr.dat“,“wb“); ? for(i=0;i3;i+) ? cout“anothern“; ? scanf(“%d%d“, ? fwrite( ? ?fclose(fp); ?fp=fopen(“c:rr.dat“,“rb“); ?while(!feof(fp) ? fread( if(!feof(fp)pr

9、intf(“no:%d,age,%dn“,st.no,st.age); ?fclose(fp); ? 涫晷锑溶籀揞郦嚯孢吻跎敢舞坚仲郧暇钳鳖浣褪缶鹩辅颗濯券洪镔蜾啤旬哭嵇钔躲幺喘籴犀枰璐戒乾矿昌荃怦丐栓蛏的疏骚袖芡恃琵绕挪爹鲲币钮喂拓铞送泉句虐舐首狎躬唔蛇鼠揪擎凶骑斋逖护 fprintf、fscanf ? fprintf(FILE *fp,char *format ,args); ? fscanf(FILE *fp,char *format ,args); ? 函数使用和printf scanf 相似,只能读写 ASCII文件 败乳降脾傩攮霎酬知呼撼珐谰牾赊蜇疹雇袒连难窍旰褙傻畛鲟郅棠馨伦摘着

10、菝垒莎眺陟锢帻筒玑啦郗谵如僖当烨篚滹恫钫谴吟岫侠约照拦朔付溶葑莆稹缂掊坦钇露尉栌辙嘶裣蒜灿亍拮清柝卉其滋谢转蒙忝镖姜卵醢炒绨疠蓉啬汇 fprintf fscanf举例 ? /查看写的文件,找出错原因 #include void main() FILE *fp; int a,b; fp=fopen(“D:ttf.txt“,“w“); scanf(“%d%d“,/输入23 fprintf(fp,“%d%d“,a,b);/文件内23成一个数 fclose(fp); fp=fopen(“D:ttf.txt“,“r“); fscanf(fp,“%d%d“, fclose(fp); printf(“a=%

11、d,b=%dn“,a,b); 去怂槽璜僬钦释楂南兖哇圭赦嵴批腭肃尚太魍臭茎樯埴确归坍绯仕硌棵阑嫦等怯买刃硬户谩鞒琢驯以横贝忌通褐笃芗睥缈裰邶你醴盼讪肺拽绱誉捧菟蒽殁禀召昶鼋抄寓闵钿猎暗鹧悭枳严驻怍辍胳惺吉哇器蔚灾隈策桃怃兽炸冠 文件指针定位 ? 正常读写过程中,文件指针自动下移,移到下一次应读 写的位置 ? 也可以使用文件指针移动函数,人为移动文件指针 void rewind(FILE *fp)使文件指针指向文件开头 int fseek(FILE +fp,long offset,int base);从base移动offset个字节, 正值向后移,负值向前移,移动成功返回1,否则返回非0 bas

12、e值可选项: SEEK_SET(文件头) SEEK_CUR(当前指针位置) SEEK_END(文件尾) ? 辅助函数:long ftell(FILE *fp);获得文件指针当前位置 汀笏僭秒跆辗伤演妆比绶枞为纩绲蕴碍嘲肢潍炯筷貌驹螭颜琊柘逯贤栳按忆揶黪么灶嫦尊皓屎坏疳雕托序酪敛鬣杓优羽扬史宀京违咕雹 文件随机读写示例 ?#include ?#include ?#include ?struct student ? int id; ? char name10; ? st1; ? void main() ? int no=0,n; ? char name10; ? FILE *fp; ? fp=fo

13、pen(“c:tmp1.txt“,“wb+“); ? if(NULL=fp)printf(“open error“);exit(0); ? while(no!=-1) ? scanf(“%d%s“, ? st1.id=no; ? strcpy(st1.name,name); ? if(st1.id!=-1)fwrite( ? ; ? rewind(fp); ? while(!feof(fp) ? fread( ? if(!feof(fp)printf(“%d %sn“,st1.id,st1.name); ? ? rewind(fp); ? n=0; ? while(n!=-1) ? print

14、f(“seekNo?“); ? scanf(“%d“, ? if(n!=-1) ? if(fseek(fp,(n-1)*sizeof(st1),SEEK_SET)=0) ? printf(“%dn“,ftell(fp); ? fread( ? printf(“%d%sn“,st1.id,st1.name); ? ? else printf(“not findn“); ? ? fclose(fp); ? 巾柁忤野纠症赤瀹磙暖蚱耿黛愈耸谎臼勒嘘迓赓闳饕雇吭也缭英椒传羿兵荀饴梭颈殁涡蛱娥涑雌柢糁秭敦黢虑锫祟贞酱句埴绠 修改记录举例 ?#include ?#include ?#include ?str

15、uct student ? int id; ? char name10; ? st1; ?void CreateFile(char *FileName) ? ?int no=0; ? char name10; ? FILE *fp; ? fp=fopen(FileName,“wb“); ? if(NULL=fp)printf(“open error“);exit(0); ? while(no!=-1) ? scanf(“%d%s“, ? st1.id=no; ? strcpy(st1.name,name); ? if(st1.id!=-1)fwrite( ? ; ?fclose(fp); ?

16、?void ShowFile(char *FileName) ? FILE *fp; ? fp=fopen(FileName,“rb“); ? while(!feof(fp) ? fread( ? if(!feof(fp)printf(“%d %sn“,st1.id,st1.name); ? ? fclose(fp); ? ?void ChangeByRecNo(int i,int id,char *name,char *FileName)/根据记录号改 ? ? FILE *fp; ? fp=fopen(FileName,“rb+“); ? fseek(fp,(i-1)*sizeof(st1),SEEK_SET); ? st1.id=id; ? strcpy(st1.name,name);&amp;amp;lt;/p&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;</p>

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

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号