版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
会计学1C语言文件中数据的访问与存储6.1文件的概念和分类P192按文件的内容分:程序文件和数据文件按文件中数据的组织形式分:文本文件和二进制文件返回第1页/共54页6.1文件的概念和分类P192如果要访问文件中的数据或向文件中存储数据,都要以文件名为标识。仅介绍文本文件中数据的读写方法。返回第2页/共54页6.2文件中数据的读写步骤P192(1)打开文件无论对文件进行读还是写操作,都需要先打开文件,打开文件用fopen函数。(2)读写文件写就是将内存中的数据存到文件中去。主要介绍fscanf和fprintf函数。(3)关闭文件当文件不再使用时,需将其关闭。关闭文件用fclose函数。返回第3页/共54页6.3.1向文本文件中写数据6.3.2从已有的文本文件中读数据6.3.3文本文件中对数据的读写操作6.3文本文件中数据的读写操作P192返回第4页/共54页6.3.1向文本文件中写数据P192永久性地存放数据,如存储测量数据结果、学生成绩存档等,在C语言中用文件。可以用fprintf函数向文本文件中写数据。问题的提出第5页/共54页【实例6-1】改写实例1-1。编写程序,将如图1.2所示的问候语写到d盘下c文件夹中的“f1.txt”文件中。任务与分析6.3.1向文本文件中写数据P192第6页/共54页操作步骤#include<stdio.h>main(){定义文件指针fp
打开(或建立)d盘c文件夹中的“f1.txt”文件将问候语写入“f1.txt”文件关闭文件}FILE*fp;fp=fopen("d:\\c\\f1.txt","w");fprintf(fp,"<-CProgramming->\n");fprintf(fp,"<>\n");fprintf(fp,"<Howdoyoudo?>\n");fprintf(fp,"<>\n");fprintf(fp,"<Nicetomeetyou!>\n");fprintf(fp,"<>\n");fprintf(fp,"<---Goodluck!--->\n");fclose(fp);第7页/共54页【实例6-2】编写程序,用人机对话的形式随机产生3道100以内加法题,并将题目和用户输入的答案写到d盘c文件夹中的“f2.txt”文件中。P194第8页/共54页操作步骤#include<stdio.h>#include<time.h>#include<stdlib.h>main(){定义整型变量a、b、c和i
定义文件指针fpinta,b,c,i;FILE*fp;第9页/共54页操作步骤
打开d盘c文件夹中的“f2.txt”文件随机产生三个题目fp=fopen("d:\\c\\f2.txt","w");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}srand(time(0));for(i=1;i<=3;i++){a=rand()%100;b=rand()%100;文件打开失败第10页/共54页操作步骤
等待键盘输入答案将题目和答案存入“f2.txt”文件关闭文件}fprintf(fp,"(%d)%d+%d=%d\n",i,a,b,c);}fclose(fp);printf("第%d题:%d+%d=",i,a,b);scanf("%d",&c);形式接近第11页/共54页【实例6-3】编写程序,将英汉对照表写到当前文件夹中的“f3.txt”文件中。P195第12页/共54页操作步骤#include<stdio.h>#include<stdlib.h>structlist {定义存放中文单词的成员定义存放英文单词的成员};main(){定义名为list的结构体类型数组a并初始化定义循环变量i定义文件指针fp
打开当前文件夹中的“f3.txt”文件将结构体数组a中的数据写入“f3.txt”文件关闭文件}charcn[10];charen[10];既清晰又易读取第13页/共54页操作步骤#include<stdio.h>#include<stdlib.h>structlist {定义存放中文单词的成员定义存放英文单词的成员};main(){定义名为list的结构体类型数组a并初始化定义循环变量i定义文件指针fp
打开当前文件夹中的“f3.txt”文件将结构体数组a中的数据写入“f3.txt”文件关闭文件}main(){structlista[5]={"中国","China","女孩","girl","男孩","boy","人","man","一","one"};inti;FILE*fp; fp=fopen("f3.txt","w");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}for(i=0;i<5;i++)
fprintf(fp,"%15s%15s\n",a[i].cn,a[i].en);
fclose(fp);}相对路径最好提供宽度第14页/共54页【实例6-4】编写程序,向已有的英汉对照表(实例6-3中建立的文件“f3.txt”)最后,添加新的单词。P197第15页/共54页操作步骤#include<stdlib.h>structlist {定义存放中文单词的成员定义存放英文单词的成员};main(){定义名为list的结构体类型变量w
定义文件指针fp
打开当前文件夹中的“f3.txt”文件输入要添加的单词将添加的单词写入“f3.txt”文件关闭文件}charcn[10];charen[10];structlistw;FILE*fp;gets();gets(w.en);fprintf(fp,"%15s%15s\n",,w.en);fp=fopen("f3.txt","a");if(fp==NULL){……}fclose(fp);第16页/共54页打开文件的一般形式:
文件指针名=fopen("文件名","打开方式");
归纳分析打
开方
式功
能
文本
二进制
"r""rb"仅为读打开已有文件"w""wb"仅为写打开"a""ab"为追加打开第17页/共54页判断文件打开是否成功:if(文件指针名==NULL){printf("Cannotopenthefile.\n");exit(0);}归纳分析关闭文件的一般形式:
fclose(文件指针);
第18页/共54页fprintf函数的一般形式:
fprintf(文件指针名,"一串字符");或
fprintf(文件指针名,"格式控制字符串",
输出项表);归纳分析第19页/共54页动手练习6-1编写程序,从键盘输入3个学生的信息(包括学号,姓名,性别,成绩),并存入d盘c文件夹中的“stu.txt”文件中。P200编写程序,向练习6-1中已建立的“stu.txt”文件中添加2个新的学生信息,信息从键盘输入。6-2第20页/共54页6.3.2从已有的文本文件中读数据P200在日常生活中经常需要访问已有文件中的数据做相应处理,如分析测量数据、统计学生成绩等。在C语言中可以用fscanf函数从文本文件中读取数据。问题的提出第21页/共54页【实例6-5】编写程序,从实例6-2建立的文件“f2.txt”中读取所有题目和答案,并显示在屏幕上。任务与分析6.3.2从已有的文本文件中读数据P200第22页/共54页操作步骤#include<stdio.h>#include<stdlib.h>main(){定义整型变量a、b、c、k和i
定义文件指针fp
打开d盘c文件夹中的“f2.txt”文件从“f2.txt”文件中读取题目和答案将题目和答案显示在屏幕上关闭文件}inta,b,c,k,i;FILE*fp;if(fp==NULL){……}fp=fopen("d:\\c\\f2.txt","r");for(i=1;i<=3;i++){fscanf(fp,"(%d)%d+%d=%d\n",&k,&a,&b,&c);printf("---%d---%d+%d=%d\n",k,a,b,c); }fclose(fp);第23页/共54页【实例6-6】编写程序,从实例6-3建立的文件“f3.txt”中读取所有内容,并显示在屏幕上。P201第24页/共54页操作步骤#include<stdio.h>#include<stdlib.h>structlist {定义存放中文单词的成员定义存放英文单词的成员};charcn[10];charen[10];第25页/共54页操作步骤main(){定义循环变量i
定义名为list的结构体类型变量w
定义文件指针fp
打开d盘c文件夹中的“f3.txt”文件从“f3.txt”文件中读取单词将单词显示在屏幕上关闭文件}inti;structlistw;FILE*fp;if(fp==NULL){……}fp=fopen("d:\\c\\f3.txt","r");for(i=1;i<=5;i++){fscanf(fp,"%15s%15s\n",,w.en);printf("%15s%15s\n",,w.en);}fclose(fp);对于长度不定的文件while(feof(fp)==0)第26页/共54页【实例6-7】编写程序,输入英文或中文单词,根据英汉对照表文件“f3.txt”,在屏幕上显示对应的单词。P203第27页/共54页操作步骤#include<stdio.h>#include<stdlib.h>#include<string.h>structlist {定义存放中文单词的成员定义存放英文单词的成员};charcn[10];charen[10];第28页/共54页操作步骤main(){定义名为list的结构体类型变量w
定义文件指针fp
定义标志变量s.flag
定义字符串变量str
打开d盘c文件夹中的“f3.txt”文件
structlistw;FILE*fp;ints,flag=0;charstr[20];fp=fopen("d:\\c\\f3.txt","r");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}第29页/共54页操作步骤选择是英汉还是汉英?输入待查找的单词printf("请选择:\n英汉---1\n汉英---2\n");scanf("%d",&s);if(s==1){printf("请输入要查找的英文单词:\n");scanf("%s",str);}elseif(s==2){printf("请输入要查找的中文:\n");scanf("%s",str);}第30页/共54页操作步骤
在“f3.txt”文件中查找对应单词输出查找结果while(feof(fp)==0){fscanf(fp,"%15s%15s\n",,w.en);if(s==1&&strcmp(str,w.en)==0){flag=1;printf("%s:%s\n",w.en,);break;}if(s==2&&strcmp(str,)==0){flag=1;printf("%s:%s\n",,w.en);break;}}if(flag==0)printf("没有查找到对应的单词");第31页/共54页操作步骤
关闭文件}fclose(fp);}第32页/共54页【实例6-8】用Windows中的记事本建立2个文件“f4.txt”和“f5.txt”,并编写程序,将文件“f5.txt”中的数据合并到“f4.txt”文件中。P205第33页/共54页操作步骤用记事本在d盘c文件夹下建立文件“f4.txt”和“f5.txt”,文件中存放汉英对照表。
第34页/共54页操作步骤#include<stdio.h>#include<stdlib.h>structlist {定义存放中文单词的成员定义存放英文单词的成员};charcn[10];charen[10];第35页/共54页操作步骤main(){定义名为list的结构体类型变量w
定义文件指针fp1,fp2
打开d盘c文件夹中的“f4.txt”文件打开d盘c文件夹中的“f5.txt”文件structlistw; FILE*fp1,*fp2;fp1=fopen("d:\\c\\f4.txt","a");if(fp1==NULL){printf("Cannotopenthefile.\n");exit(0);}fp2=fopen("d:\\c\\f5.txt","r");if(fp2==NULL){printf("Cannotopenthefile.\n");exit(0);}第36页/共54页操作步骤
从“f5.txt”文件中读取数据将数据追加到“f4.txt”文件关闭两个文件}while(feof(fp2)==0){fscanf(fp2,"%10s%15s\n",,w.en);fprintf(fp1,"%10s%15s\n",,w.en);} fclose(fp1);fclose(fp2);第37页/共54页fscanf函数的一般形式:
fscanf(文件指针名,"格式控制字符串",
输入项表);归纳分析读取文件中所有数据:
while(feof(文件指针)==0){读数据
}
第38页/共54页动手练习6-3编写程序,输入学号,从练习6-1已建立的“stu.txt”文件中查找对应的学生(若“stu.txt”文件不存在,先建立),并输出该学生的全部信息(包括学号,姓名,性别,成绩)。P207第39页/共54页动手练习6-4P207用Windows中的记事本建立1个文件“stu1.txt”,文件中存储新入学的学生信息,与“stu.txt”文件格式一致。编写程序,将文件“stu1.txt”中的数据合并到“stu.txt”中。第40页/共54页6.3.3文本文件中对数据的读写操作P207在日常生活中经常需要读取已有文件中的数据进行处理,然后再存入文件中。如对学生成绩排序、考试系统等。在C语言中,需要综合运用函数fscanf、fprintf以及feof等。问题的提出第41页/共54页【实例6-9】编写程序,从实例6-2建立的文件“f2.txt”中修改第1题的错误答案。任务与分析6.3.3文本文件中对数据的读写操作P207第42页/共54页操作步骤#include<stdio.h>#include<stdlib.h>main(){定义整型数组a、b、c、k
定义循环控制变量i、j
定义文件指针fp
打开d盘c文件夹中的“f2.txt”文件inta[50],b[50],c[50],k[50],i,j;FILE*fp; fp=fopen("d:\\c\\f2.txt","r");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}第43页/共54页操作步骤从“f2.txt”文件中读取数据到数组a、b、c、k中关闭文件修改第1题答案i=0;while(feof(fp)==0){
fscanf(fp,"(%d)%d+%d=%d\n",
&k[i],&a[i],&b[i],&c[i]);i++;}fclose(fp);printf("--%d---%d+%d=\n",k[0],a[0],b[0]);printf("请输入正确答案:");scanf("%d",&c[0]);第44页/共54页操作步骤
重新打开“f2.txt”文件将修改后的新数据写入该文件关闭文件}fp=fopen("d:\\c\\f2.txt","w");if(fp==NULL){printf("Cannotopenthefile.\n");exit(0);}for(j=0;j<i;j++)fprintf(fp,"(%d)%d+%d=%d\n",k[j],a[j],b[j],c[j]);printf("修改完毕\n"); fclose(fp)0)第45页/共54页【实例6-10】编写程序,将已建立好的文件“f2.txt”中数据全部复制到新文件“f2_new.txt”中。P209第46页/共54页操作步骤#include<stdio.h>#include<stdlib.h>main(){定义整型变量a、b、c、k
定义文件指针fp1、fp2
打开d盘c文件夹中“f2.txt”、“f2_new.txt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026内蒙古聚英人力资源服务有限责任公司定向招聘劳务外包(公路养护方向)人员20人笔试备考试题及答案解析
- 关于连江县2019-2021年招聘的编外合同教师转编内或参聘考试的备考题库及参考答案详解一套
- 2026年嘉兴市南湖区发展和改革局下属事业单位公开选聘工作人员1人笔试模拟试题及答案解析
- 2026贵州贵阳市白云区艳山红镇中心卫生院村医招聘笔试参考题库及答案解析
- 2026年及未来5年市场数据中国炼焦煤行业市场调研分析及投资战略咨询报告
- 2026年海口市市场监督管理局公开招聘下属事业单位工作人员备考题库(第1号)附答案详解
- 2026广西河池市天峨县兵役登记笔试备考题库及答案解析
- 2026年永安财产保险股份有限公司玉溪中心支公司招聘备考题库有答案详解
- 广安安农发展集团有限公司2026年度第一批次公开招聘劳务派遣制工作人员备考题库及答案详解1套
- 2026年杭州市临平区临平第五中学公开招聘临时聘用教师备考题库及完整答案详解1套
- (2025年)病理学试题及答案
- 贵州省贵阳市普通中学2024-2025学年高二上学期语文期末试卷(含答案)
- 2025-2026学年人教版七年级上册道德与法治期末试卷(含答案和解析)
- 无锡公建工程质量检测有限公司2025年下半年公开招聘专业技术人员备考题库及答案详解一套
- 北京市平谷区政务服务中心综合工作人员招聘笔试备考题库及答案解析
- 2026年高级会计师面试题及答案解析
- 湖南省邵阳市2025-2026学年高二历史上学期期末模拟卷(试卷及全解全析)
- (2025版)腹膜后肿瘤诊治专家共识课件
- 基因编辑真菌鉴定
- 转让钓场合同协议书
- 温泉洗浴行业分析报告
评论
0/150
提交评论