版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026全国农民科学素质网络知识竞赛题库及答案(政策法规)
- 2026福建福清市汇融创业投资集团有限公司(第一次)招聘8人笔试历年常考点试题专练附带答案详解
- 2026福建福州市闽侯县建设投资集团有限公司招聘(第二批)拟聘用人员笔试历年典型考点题库附带答案详解
- 2026福建省电力电网有限公司高校毕业生招聘69人(第二批)笔试历年难易错考点试卷带答案解析
- 2026福建省三明市永安林业(集团)股份有限公司招聘相关岗位20人笔试历年备考题库附带答案详解
- 2026福建漳州信息产业集团有限公司市场化用工岗位招聘24人笔试历年备考题库附带答案详解
- 2026江苏富轩实业有限公司招聘13人笔试历年常考点试题专练附带答案详解
- 2026年重庆渝湘复线高速公路有限公司社会招聘46人笔试历年典型考点题库附带答案详解
- 2026年日照城投集团有限公司公开招聘工作人员(74人)笔试历年常考点试题专练附带答案详解
- 2026年中国能源建设集团安徽电力建设第二工程有限公司招聘102人笔试历年典型考点题库附带答案详解
- 【曲臂式高空作业台载荷数值的估值与计算过程案例3200字】
- 2025年度食品厂安全应急演练计划
- 采购付款管理办法
- 消防防排烟系统培训课件
- 小学数学非纸笔测评任务的设计原则与实施策略
- 2025广州市小升初数学分班考试押题卷(学生版+解析版)
- 《比看上去更有意思》(2021年上海市中考满分作文33篇附审题指导)
- JG/T 335-2011混凝土结构防护用成膜型涂料
- 防错防呆试题及答案
- 《古代炼金术中的化学原理》课件
- 成都市锦江区2023年七年级《英语》下册期末试卷与参考答案
评论
0/150
提交评论