文件缓存文件写入失败

缓存文件写入失败  时间: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修改一条日志统计支出统计收入

GigsGigsCloud(年付26美元)国际线路美国VPS主机

已经有一段时间没有听到Gigsgigscloud服务商的信息,这不今天看到商家有新增一款国际版线路的美国VPS主机,年付也是比较便宜的只需要26美元。线路上是接入Cogentco、NTT、AN2YIX以及其他亚洲Peering。这款方案的VPS主机默认的配置是1Gbps带宽,比较神奇的需要等待手工人工开通激活,不是立即开通的。我们看看这款服务器在哪里选择看到套餐。内存CPUSSD流量价格购买地址1...

青果网络618:洛杉矶CN2 GIA/东京CN2套餐年付199元起,国内高防独服套餐66折

青果网络怎么样?青果网络隶属于泉州市青果网络科技有限公司,青果网络商家成立于2015年4月1日,拥有工信部颁发的全网IDC/ISP/IP-VPN资质,是国内为数不多具有IDC/ISP双资质的综合型云计算服务商。青果网络是APNIC和CNNIC地址分配联盟成员,泉州市互联网协会会员单位,信誉非常有保障。目前,青果网络商家正式开启了618云特惠活动,针对国内外机房都有相应的优惠。点击进入:青果网络官方...

UCloud新人优惠中国香港/日本/美国云服务器低至4元

UCloud优刻得商家这几年应该已经被我们不少的个人站长用户认知,且确实在当下阿里云、腾讯云服务商不断的只促销服务于新用户活动,给我们很多老用户折扣的空间不多。于是,我们可以通过拓展选择其他同类服务商享受新人的福利,这里其中之一就选择UCloud商家。UCloud服务商2020年创业板上市的,实际上很早就有认识到,那时候价格高的离谱,谁让他们只服务有钱的企业用户呢。这里希望融入到我们大众消费者,你...

缓存文件写入失败为你推荐
木马病毒木马病毒的区别微信如何建群微信怎么建立群照片转手绘美图秀秀可以照片转手绘吗?是手机版的百度手写百度输入法切换手写 百度汉王手写输入法办公协同软件求一款国内知名的OA办公软件,谁知道有哪些呢?彩信中心移动的彩信中心是?主页是?收不到彩信,怎么设置?如何建立自己的网站怎么创建自己的网站淘宝网页显示不正常淘宝网显示不正常人人逛街人人都喜欢逛街吗网站优化方案网站优化方法有哪些
域名抢注 购买域名和空间 edgecast 2014年感恩节 nerd mobaxterm php空间推荐 老左来了 国外视频网站有哪些 空间租赁 空间登陆首页 shuang12 免费个人主页 空间申请 xshell5注册码 windowsserver2012r2 海外加速 apache启动失败 美国西雅图独立 日本小学生 更多