文件缓存文件写入失败

缓存文件写入失败  时间:2021-02-25  阅读:()
自定义类型(typedef):1.
自定义类型(typedef):将C语言中的已有类型(包括已定义过的自定义类型)重新命名新的名称可以代替已有数据类型常用于简化对复杂数据类型定义的描述typedef;自定义类型(typedef)typedef;typedefintINTEGER;inti,j;INTEGERi,j;typedefint*POINTER;int*p1;POINTERp1;自定义类型(typedef)的使用方法定义变量inti变量名新类型名intINTEGER加上typedeftypedefintINTEGER用新类型名定义变量INTEGERi;定义一个数组类型:IntArrayinta[10];intIntArray[10];typedefintIntArray[10];IntArraya;inta[10];Chap12文件12.
1将短句"HelloWorld"写入到文件12.
2读取学生成绩文件12.
3文件复制12.
4文件综合应用:个人小金库的管理本章要点什么是文件C文件是如何存储的什么是文本文件和二进制文件怎样打开、关闭文件怎样编写文件读写程序怎样编写程序,实现简单的数据处理12.
1将短句"HelloWorld"写入到文件例12-1把短句"HelloWorld!
"保存到磁盘文件f1.
txt中.
#include#includeintmain(void){FILE*fp;/*定义文件指针*/if((fp=fopen("f1.
txt","w"))==NULL){/*打开文件*/printf("Fileopenerror!
\n");exit(0);}fprintf(fp,"%s","HelloWorld!
写文件*/if(fclose(fp)){/*关闭文件*/printf("Cannotclosethefile!
\n");exit(0);}return0;}例12-1源程序12.
1.
2文件的概念文件:保存在外存储器上的一组数据的有序集合特点:数据长久保存数据长度不定数据按顺序存取12.
1.
3文本文件和二进制文件C语言中的文件是数据流文件的两种数据形式:ASCII码(文本文件textstream)字符流二进制码(二进制文件binarystream)二进制文件是直接把内存数据以二进制形式保存.
例如,整数1234文本文件保存:49505152(4个字符)二进制文件保存:04D2(1234的二进制数)12.
1.
4缓冲文件系统内存单元数据……文件磁盘速度慢,直接把数据写到磁盘效率很低12.
1.
4缓冲文件系统向磁盘输出数据:数据缓冲区,装满缓冲区后磁盘文件.
从磁盘读入数据:先一次性从磁盘文件将一批数据输入到缓冲区,然后再从缓冲区逐个读入数据到变量.
数据……缓冲器512字节……文件由操作系统自动完成程序控制内存单元内存单元缓冲文件与文件类型指针用文件指针指示文件缓冲区中具体读写的位置FILE*fp;fp同时使用多个文件时,每个文件都有缓冲区,用不同的文件指针分别指示.
typedefstruct{shortlevel;unsignedflags;……}FILE;第242页FILE:结构类型用typedef定义,在头文件中typedefstruct{shortlevel;/*缓冲区使用量*/unsignedflags;/*文件状态标志*/charfd;/*文件描述符*/shortbsize;/*缓冲区大小*/unsignedchar*buffer;/*文件缓冲区的首地址*/unsignedchar*curp;/*指向文件缓冲区的工作指针*/unsignedcharhold;/*其他信息*/unsignedistemp;shorttoken;}FILE;2.
文件结构-FILE3.
文件类型指针FILE*fp指向文件缓冲区,通过移动指针实现对文件的操作fp同时使用多个文件时,每个文件都有缓冲区,用不同的文件指针分别指示.
如何使fp与具体文件挂钩12.
2读取学生成绩文件例12-2已知一个数据文件f.
txt中保存了5个学生的计算机等级考试成绩,包括学号、姓名和分数,文件内容如下,请将文件的内容读出并显示到屏幕中.
301101张文91301102陈慧85301103王卫东76301104郑伟69301105郭温涛5512.
2.
1程序解析#include"stdio.
h"intmain(void){FILE*fp;/*定义文件指针*/longnum;charstname[20];intscore;if((fp=fopen("f.
txt","r"))==NULL){/*打开文件*/printf("Fileopenerror!
\n");exit(0);}while(!
feof(fp)){fscanf(fp,"%ld%s%d",&num,stname,&score);printf("%ld%s%d\n",num,stname,score);};if(fclose(fp)){/*关闭文件*/printf("Cannotclosethefile!
\n");exit(0);}}12.
2.
1程序解析#include"stdio.
h"intmain(void){FILE*fp;/*定义文件指针*/longnum;charstname[20];intscore;if((fp=fopen("f.
txt","r"))==NULL){/*打开文件*/printf("Fileopenerror!
\n");exit(0);}while(!
feof(fp)){fscanf(fp,"%ld%s%d",&num,stname,&score);printf("%ld%s%d\n",num,stname,score);};if(fclose(fp)){/*关闭文件*/printf("Cannotclosethefile!
\n");exit(0);}}fopen("文件名字符串","打开方式字符串")使文件指针与相应文件实体对应起来程序对文件指针进行操作,即fp代表磁盘文件函数fopen()的返回值执行成功,则返回包含文件缓冲区等信息的FILE型地址,赋给文件指针fp不成功,则返回一个NULL(空值)exit(0):关闭所有打开的文件,并终止程序的执行参数0表示程序正常结束;非0参数通常表示不正常的程序结束文件打开方式fp=fopen("f.
txt","r")文件打开方式参数表文件读写与打开方式if读文件指定的文件必须存在,否则出错;if写文件(指定的文件可以存在,也可以不存在)if以"w"方式写if该文件已经存在原文件将被删去重新建立;else按指定的名字新建一个文件;elseif以"a"方式写if该文件已经存在写入的数据将被添加到指定文件原有数据的后面,不会删去原来的内容;else按指定的名字新建一个文件(与"w"相同);if文件同时读和写使用"r+"、"w+"或"a+"打开文件12.
2.
1程序解析#include"stdio.
h"intmain(void){FILE*fp;/*定义文件指针*/longnum;charstname[20];intscore;if((fp=fopen("f.
txt","r"))==NULL){/*打开文件*/printf("Fileopenerror!
\n");exit(0);}while(!
feof(fp)){fscanf(fp,"%ld%s%d",&num,stname,&score);printf("%ld%s%d\n",num,stname,score);};if(fclose(fp)){/*关闭文件*/printf("Cannotclosethefile!
\n");exit(0);}}12.
2.
3关闭文件if(fclose(fp)){printf("Cannotclosethefile!
\n");exit(0);}fclose(文件指针)把缓冲区中的数据写入磁盘扇区,确保写文件的正常完成释放文件缓冲区单元和FILE结构体,使文件指针与具体文件脱钩.
函数fclose()的返回值返回0:正常关闭文件返回非0:无法正常关闭文件12.
3文件复制例12-3已知一个文本数据文件f1.
txt,请将该文件复制一份,保存为f2.
txt.
新建一个文本文件f1.
txt,将该文件与源程序放在同一目录下,执行程序,观察结果.
例12-3源程序#includeintmain(void){FILE*fp1,*fp2;charc;if((fp1=fopen("f1.
dat","r"))==NULL){printf("Fileopenerror!
\n");exit(0);}if((fp2=fopen("f2.
dat","w"))==NULL){printf("Fileopenerror!
\n");exit(0);}while(!
feof(fp1)){c=fgetc(fp1);fputc(c,fp2);}fclose(fp1);fclose(fp2);return0;}打开多个文件if((fp1=fopen(f1.
dat,"r"))==NULL){printf("Fileopenerror!
\n");exit(0);}if((fp2=fopen("f2.
dat","w"))==NULL){printf("Fileopenerror!
\n");exit(0);}C语言允许同时打开多个文件不同的文件对应不同的文件指针不允许同一个文件在关闭前再次打开文件读写函数字符读写函数:fgetc/fputc字符串读写函数:fputs/fgets格式化读写函数:fscanf/fprintf二进制读写函数:fread/fwrite其他相关函数:检测文件结尾函数feof检测文件读写出错函数ferror清除末尾标志和出错标志函数clearerr文件定位的函数fseek12.
3.
2字符读写函数fgetc和fputcwhile(!
feof(fp1)){c=fgetc(fp1);fputc(c,fp2);}函数fputc()fputc(ch,fp);把一个字符ch写到fp所指示的磁盘文件上返回值-1(EOF):写文件失败ch:写文件成功字符读写函数fgetc和fputc函数fgetc()ch=fgetc(fp);从fp所指示的磁盘文件上读入一个字符到ch区分键盘字符输入函数getchar()从键盘输入10个字符,写到文件f2.
txt中,再重新读出,并在屏幕上显示验证.
键盘输入写入文件f2.
txt读文件屏幕显示的过程键盘输入f2.
txt时,文件按写方式打开.
f2.
txt显示到屏幕时,文件按读方式打开.
读和写是两种不同的操作,f2.
txt分别被打开和关闭两次.
例12-4源程序intmain(void){inti;charch;FILE*fp;if((fp=fopen("f2.
txt","w"))==NULL){/*打开文件f2.
txt*/printf("Fileopenerror!
\n");exit(0);}for(i=0;i0){/*表示有记录存在*/fseek(cfptr,size*(logcount-1),SEEK_SET);/*定位最后记录*/fread(&log,size,1,cfptr);/*读取最后记录*/printf("Thelastlogis:\n");printf("logid:%-6ld\nlogdate:%-11s\nlognote:%-15s\n",log.
logid,log.
logdate,log.
lognote);printf("charge:%-10.
2lf\nbalance:%-10.
2lf\n",log.
charge,log.
balance);}elseprintf("nologsinfile!
\n");}增加日志voidAddNewLog(FILE*cfptr)/*添加新记录*/{structLogDatalog,lastlog;longlogcount;printf("Inputlogdate(format:2006-01-01):");scanf("%s",log.
logdate);printf("Inputlognote:");scanf("%s",log.
lognote);printf("InputCharge:Income+andexpend-:");scanf("%lf",&log.
charge);logcount=getLogcount(cfptr);/*获取记录数*/增加日志if(logcount>0){fseek(cfptr,size*(logcount-1),SEEK_SET);fread(&lastlog,size,1,cfptr);/*读入最后记录*/log.
logid=lastlog.
logid+1;/*记录号按顺序是上次的号+1*/log.
balance=log.
charge+lastlog.
balance;}else{/*如果文件是初始,记录数为0*/log.
logid=1;log.
balance=log.
charge;}fseek(cfptr,0L,SEEK_END);/*rewind(cfptr);*/printf("logid=%ld\n",log.
logid);fwrite(&log,sizeof(structLogData),1,cfptr);/*写入记录*/}计算日志个数longgetLogcount(FILE*cfptr)/*获取文件记录总数*/{longbegin,end,logcount;fseek(cfptr,0L,SEEK_SET);begin=ftell(cfptr);fseek(cfptr,0L,SEEK_END);end=ftell(cfptr);logcount=(end-begin)/size;returnlogcount;}Anymoreoperations修改一条日志统计支出统计收入

RAKsmart推出7.59美元/月,云服务器产品Cloud Server,KVM架构1核1G内存40G硬盘1M带宽基础配置

近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...

搬瓦工最新套餐KVM,CN2线路

搬瓦工在国内非常流行的主机商,以提供低价的vps著称.不过近几年价格逐渐攀升.不过稳定性和速度一向不错.依然深受国内vps爱好者喜爱.新上线的套餐经常卖到断货.支持支付宝,paypal很方便购买和使用.官网网站:https://www.bandwagonhost.com[不能直接访问,已墙]https://www.bwh88.net[有些地区不能直接访问]https://www.bwh81.net...

鲸云10美元,香港BGPRM 1核 1G 10Mbps峰值带宽 1TB流量,江西CN2-NAT 1核 512MB内存 100M带宽 ,

WHloud Official Notice(鲸云官方通知)(鲸落 梦之终章)]WHloud RouMu Cloud Hosting若木产品线云主机-香港节点上新预售本次线路均为电信CN2 GIA+移动联通BGP,此机型为正常常规机,建站推荐。本次预售定为国庆后开通,据销售状况决定,照以往经验或有咕咕的可能性,但是大多等待时间不长。均赠送2个快照 2个备份,1个默认ipv4官方网站:https:/...

缓存文件写入失败为你推荐
photoimpact教程谁有KnockOut 1.5的教程啊,要能看的或者说KnockOut 1.5能不能导入PS中啊?绵阳电信绵阳电信宽带套餐资费推荐邮箱打不开怎么办163邮箱突然打不开了怎么办显卡温度多少正常显卡温度多少算正常?怎么升级ios6苹果iPhone6怎么升级系统免费免费建站我想建一个自己的免费网站,但不知道那里有..云挂机云挂机每天2+元你提了吗?微信电话本怎么用微信电话本短信管理功能怎么用?网站地图制作网站地图怎么做聚美优品红包聚美优品红包怎么获得
北京域名注册 免费com域名申请 香港机房 paypal认证 嘟牛 电子邮件服务器 adroit 河南移动梦网 zcloud 九零网络 天翼云主机 企业私有云存储 免费网络电视直播 八度空间论坛 西部数码空间购买 好看的空间留言代码 网通ip地址 starrysky 免费ftp资源 云呼免费网络电话 更多