




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章文件理解C语言文件的基本概念和原理理解文件读写的一般流程掌握使用文件实现数据存取的方法本章目标例子1:给祖国送祝福10.1一个简单的文件操作程序#include<stdio.h>#include<stdlib.h>#include<string.h>voidInput(){FILE*fpOut;charstrLine[200];fpOut=fopen("wishes.txt","w");if(fpOut==NULL){printf("无法创建文件!\n");exit(0);}while(true){printf(“请输入您的祝福语:\n”);scanf(“%s”,strLine);
if(!strcmp(strLine,“完毕”))break;
fputs(strLine,fpOut);
fputc('\n',fpOut);
memset(strLine,0,sizeof(strLine));
}
fclose(fpOut);
}int
main(){
printf(“同学们的祝福语开始录入\n”);Input();
return
0;
}
文件:文件是指保存在磁盘上的一组数据的有序集合。文件名:表示文件的数据集合有一个名称,叫做文件名。10.2文件的基本概念和原理(1)
文件读写概念硬盘写读保存在变量和数组中的数据是暂时的,关机会丢失数据保存到文件可实现永久存储,关机也不会丢失内存10.2文件的基本概念和原理(2)
文本文件和二进制文件的区别文本文件数据被作为字符,并以字符的二进制编码形式保存。1234‘1’‘2’‘3’‘4’整数把四位整数转为4个字符,并将其对应的ACSII码写入文件中00110001001100100011001100110100二进制文件以数据在内存中的二进制形式保存。1234整数0000010011010010把值1234的二进制编码写入文件中内存磁盘10.2文件的基本概念和原理(3)
文件读写一般流打开文件读写文件关闭文件10.3文本文件的读写(1)
文本文件的读写程序模板intmain(){……
//Step1:以写模式打开文件FILE*pfOut=fopen(…,“w”);
//Step2:主循环——将数据写到文件while(…){//将数据转化为字符,并写到文件中
//“写”函数有:fprintf()、fputc()、fputs()}
//Step3:关闭文件,即fclose(pfOut);}intmain(){……
//Step1:以读模式打开文件FILE*pfIn=fopen(…,“r”);
//Step2:主循环——将数据写到文件while(…){//从文件中读取字符或字符串//转换类型,并赋值给对应的变量
//“读”函数有:fscanf()、fgetc()、fgets()}
//Step3:关闭文件,即fclose(pfIn);}写文件读文件写函数:intfprintf(FILE*fp,格式字符串,输出项列表);intfputc(intc,FILE*fp);intfputs(char*str,FILE*fp)读函数:intfscanf(FILE*fp,格式字符串,输入项地址列表);intfgetc(FILE*fp);char*fgets(char*str,intn,FILE*fp)(2)文本文件的读写函数10.3文本文件的读写10.3文本文件的读写“写”文件的代码:#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfOut=NULL;inti=1;pfOut=fopen("I:\\devc_projs\\teaching\\stu_scores.txt","w");if(!pfOut){printf("打开文件出错!\n");return-1;} while(1){printf("请输入第%d位学生信息(学号、姓名、高数、英语、C语言):\n",i++);scanf("%d%s%d%d%d",&iNo,strName,&iScores[0],&iScores[1],&iScores[2]);if(iNo==-1)break; fprintf(pfOut,"%d%s%d%d%d\n",iNo,strName,iScores[0],iScores[1],iScores[2]);}fclose(pfOut);return0;}10.3文本文件的读写“读”文件的代码:#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfIn=NULL;inti=1;intiTotalScore=0;pfIn=fopen("I:\\devc_projs\\teaching\\stu_scores.txt","r");if(!pfIn){printf("打开文件出错!\n");return-1;}printf("学号姓名高数英语C语言总分\n");while(!feof(pfIn)){fscanf(pfIn,"%d%s%d%d%d\n",&iNo,strName,&iScores[0],&iScores[1],&iScores[2]);iTotalScore=iScores[0]+iScores[1]+iScores[2];printf("%d,%s,%d,%d,%d,%d\n",iNo,strName,iScores[0],iScores[1],iScores[2],iTotalScore);} 10.4二进制文件的读写(1)二进制文件的读写程序模板intmain(){……
//Step1:以写模式打开文件FILE*pfOut=fopen(…,“w”);
//Step2:主循环——将数据写到文件while(…){//直接将数据原原本本写到文件中
//“写”函数为:fwrite()}
//Step3:关闭文件,即fclose(pfOut);}intmain(){……
//Step1:以读模式打开文件FILE*pfIn=fopen(…,“r”);
//Step2:主循环——从文件读数据while(…){//从文件中直接把数据读取到对应的变量
//“读”函数有:fread()}
//Step3:关闭文件,即fclose(pfIn);}写文件读文件写函数:intfwrite(void*buffer,unsignedsize,unsignedcount,FILE*fp)读函数:intfread(void*buffer,unsignedsize,unsignedcount,FILE*fp)(2)二进制文件的读写函数10.4二进制文件的读写示例:intiValue=10;doubledValue=12.5;doubledArr[3]={1.5,3.0,4.5};/*sizeof(iValue)可以用sizeof(int)代替*/fwrite(&iValue,sizeof(iValue),1,fp);/*将dValue变量12.5写到10之后*/fwrite(&dValue,sizeof(double),1,fp);/*将dArr的第一个元素1.5写到12.5之后*/fwrite(&dArr[0],sizeof(double),1,fp);fwrite(&dArr[1],sizeof(double),1,fp);fwrite(&dArr[2],sizeof(double),1,fp);示例:intiValue;doubledValue;doubledArr[3];/*从当前位置读入sizeof(iValue)个字节,存储到iValue*/fread(&iValue,sizeof(iValue),1,fp);/*继续读入sizeof(double)个字节的数据,存储到dValue*/fread(&dValue,sizeof(double),1,fp);/*再继续读入sizeof(double)个字节的数据,存储到dArr[0]*/fread(&dArr[0],sizeof(double),1,fp);fread(&dArr[1],sizeof(double),1,fp);/*同上*/fread(&dArr[2],sizeof(double),1,fp);/*同上*/10.4二进制文件的读写“写”文件的代码#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfOut=NULL;inti=1;pfOut=fopen("I:\\devc_projs\\teaching\\stu_scores.dat","wb");if(!pfOut){printf("打开文件出错!\n");return-1;}while(1){printf("请输入第%d位学生的信息(学号、姓名、高数、英语、C语言):\n",i++);
scanf("%d%s%d%d%d",&iNo,strName,&iScores[0],&iScores[1],&iScores[2]); if(iNo==-1)break; fwrite(&iNo,sizeof(iNo),1,pfOut);fwrite(strName,sizeof(strName),1,pfOut);fwrite(&iScores[0],sizeof(iScores[0]),1,pfOut);fwrite(&iScores[1],sizeof(iScores[1]),1,pfOut);fwrite(&iScores[2],sizeof(iScores[2]),1,pfOut);} fclose(pfOut);return0;}10.4二进制文件的读写“读”文件的代码#include<stdio.h>intmain(){intiNo;charstrName[32]={0};intiScores[3]={0};FILE*pfIn=NULL;inti=1;intiTotalScore=0;pfIn=fopen("I:\\devc_projs\\teaching\\stu_scores.dat","rb");if(!pfIn){printf("打开文件出错!\n");return-1;}printf("学号姓名高数英语C语言总分\n");while(!feof(pfIn)){fread(&iNo,sizeof(iNo),1,pfIn);fread(strName,sizeof(strName),1,pfIn);fread(&iScores[0],sizeof(iScores[0]),1,pfIn);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司安全管理人员安全培训考试题及答案(易错题)
- 班组安全培训试题附参考答案(精练)
- 狗肾生品与滑石粉烫炙品的质量标准及UHPLC-Q-Exactive-MS代谢组学研究
- 落花流水纹在陶瓷装饰设计中的应用
- 公司、项目部、各个班组安全培训试题含完整答案【夺冠系列】
- 激素及调节内分泌功能类内服药品智能生产设备企业制定与实施新质生产力战略研究报告
- 童装与青少年装企业制定与实施新质生产力战略研究报告
- 高性能分散剂生产企业制定与实施新质生产力战略研究报告
- 湿地生态净水系统企业制定与实施新质生产力战略研究报告
- 智慧物流园区行业深度调研及发展战略咨询报告
- 安徽省沿淮教育联盟2025届九年级英语第一学期期末学业水平测试试题含解析
- CJT151-2016 薄壁不锈钢钢管
- 2024年民航安全检查员(三级)资格理论考试题库大全-上(单选题部分)
- 幼儿园中班语言课件:《小鸡看世界》
- 马克思主义基本原理考试题库附答案【典型题】
- 工程项目部安全生产治本攻坚三年行动实施方案
- 部编小学语文单元作业设计四年级上册第三单元 3
- MGD与睑缘炎-课件
- 《脊柱肿瘤》课件
- 礼仪部计划书
- 顺产后健康宣教内容
评论
0/150
提交评论