C语言程序设计 课件 第10章-文件_第1页
C语言程序设计 课件 第10章-文件_第2页
C语言程序设计 课件 第10章-文件_第3页
C语言程序设计 课件 第10章-文件_第4页
C语言程序设计 课件 第10章-文件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论