版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 16 章 文件第一节 c文件概述一、文件的概念: 存储在外部介质上数据的集合,是操作系统数据管理的单位二、使用数据文件的目的1、数据文件的改动不引起程序的改动 程序与数据分离2、不同程序可以访问同一数据文件中的数据 数据共享3、能长期保存程序运行的中间数据或结果数据1. 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成2. 按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等)3. 按数据的组织形式: 文本文件: ascii文件,每个字节存放一个字符的ascii码 二进制文件:数
2、据按其在内存中的存储形式原样存放三、文件分类如 int型数100000010011100010000内存存储形式0010011100010000二进制形式0011000100110000001100000011000000110000ascii形式文本文件特点:存储量大、速度慢、便于对字符操作二进制文件特点:存储量小、速度快、便于存放中间结果49 48 48 48 48一、文件结构体file第二节 文件类型指针1. 缓冲文件系统为每个正使用的文件在内存开辟文件信息区2. 文件信息用系统定义的名为file的结构体描述3. file定义在stdio.h中二、文件类型指针的定义格式: file *指
3、针变量名;用法: file *fp1, *fp2;c文件操作用库函数实现,包含在stdio.h&文件使用方式:打开文件-文件读/写-关闭文件&系统自动打开和关闭三个标准文件:v标准输入-键盘 stdinv标准输出-显示器 stdoutv标准出错输出-显示器 stderr打开文件fopenv函数原型: file *fopen(char *name,char *mode)v功能:按指定方式打开文件v返值:正常打开,为指向文件结构体的指针; 打开失败,为null要打开的文件名使用文件方式例 文件打开与测试 file *fp; fp=fopen(“aa.c”,“w”); if(fp=null) pri
4、ntf(“file open error!n”); exit(0); 例 file *fp; fp= fopen (“c:fengyibkctest.dat”,”r”); 例 file *fp; char *filename=“c:fengyibkctest.dat” fp= fopen(filename,”r”); “r+/rb+” (读写)“a/ab” (追加)“w/wb” (只写)“r/rb” (只读)“w+/wb+” (读写)“a+/ab+” (读写)为输入输入打开一个文本/二进制文件为输出输出打开或建立一个文本/二进制文件为读/写打开一个文本/二进制文件为读/写建立一个文本/二进制文
5、件为读/写打开或建立一个文本/二进制文件向文本/二进制文件尾追加追加数据文件使用方式含义第三节 文件的打开二、功能第四节 文件的关闭一、格式fclose(file *fp)关闭fp指向的文件文件打开时返回的文件类型指针磁盘文件输出文件缓冲区输入文件缓冲区程序数据区a缓冲文件系统:fclose不关闭文件可能会丢失数据一、单字符输入与输出第五节 文件的读写1. fputc(c, file *fp)功能:把一字节代码c写入fp指向的文件中返值:正常,返回c;出错,为eof例: fputc(a, fp)2. fgetc(file *fp)功能:从fp指向的文件中读取一字节代码返值:正常,返回c;出错,
6、为eof例: char ch; ch=fgetc(fp);二、文件结束函数feof格式: feof(fp) 功能:判断指针fp所指向的文件是否到了文件尾返值:文件结束, 返回真(非0); 文件未结束,返回01. 文本文件判断格式while(ch=fgetc(fp)!=eof)2. 二进制文件判断格式while( !feof(fp) ) c=fgetc(fp); . #include main() file *in, *out; char ch,infile10,outfile10; scanf(%s,infile); scanf(%s,outfile); if (in = fopen(infi
7、le, r)= null) printf(cannot open infile.n); exit(0); if (out = fopen(outfile, w)= null) printf(cannot open outfile.n); exit(0); while (!feof(in) fputc(fgetc(in), out); fclose(in); fclose(out);例 文件拷贝第七节 格式化输入输出格式: fscanf(文件指针, “格式控制串”, 输入项表)功能: 从文件指针所指的文件中按格式读取数据, 存入输入项表中返值:成功,返回i/o的个数;出错或文件尾,返回eof一、
8、fscanf函数格式: fprintf(文件指针, “格式控制串”, 输出项表功能: 将输入项表中的数据按格式存入文件指针所指 的文件中返值:成功,返回i/o的个数;出错,返回eof二、fprintf函数fscanf(fp,“%d,%f”, &i, &t); /若文件中有3,4.5 ,则将3送入i, 4.5送入t例 fprintf(fp,“%d,%6.2f”,i,t); /将i和t按%d,%6.2f格式输出到fp所指文件例例 从键盘按格式输入数据存到磁盘文件中去从键盘按格式输入数据存到磁盘文件中去#include main() char s80,c80; int a,b; file *fp;
9、if(fp=fopen(test,w)=null) puts(cant open file); return ; fscanf(stdin,%s%d, s, &a); fprintf(fp,%s %d, s, a); fclose(fp); 第八节 字符串输入输出格式: fgets(地址, n, 文件指针)功能: 从文件指针所指的文件中读取n-1个字符,存入 指定地址开始的存储单元中,返回这个地址一、fgets函数格式: fputs(字符串, 文件指针功能: 将字符串写入文件指针所指的文件中返值:成功,返回正整数,出错,返回eof(-1)二、fputs函数说明:1. 输出时字符串最后的0并不输
10、出,也不自动加n2. 形成的文件中字符串首尾相接,为便于阅读,可人为加入n说明:1. 若碰到换行符或文件结束标志(eof),读入结束2. 该函数最多能读入 n-1 个字符3. 读入结束,系统会自动在最后加一个0第九节 数据块输入输出函数 fread与fwrite一、fread函数例:若有struct st char num8; float mk5; pers30;格式: fread(buffer, size, count,fp);功能: 从文件中读出 count 个 size大小的数据块, 存入buffer开始的空间中。i=0;fread(&persi,sizeof(struct st),1,
11、fp);从fp所指的文件中读取1块大小为sizeof(struct st)的数据块,放入pers0开始的存储空间中,即给pers0中的各个成员赋值二、fwrite函数例:若有struct st char num8; float mk5; pers30;格式: fwrite(buffer, size, count,fp);功能: 将 从buffer开始的地址中,count 个 size大小 的数据块,写入fp所指的文件中 for (i=0;i30;i+)fwrite(&persi,sizeof(struct st),1,fp);将结构体数组的所有数据写入fp所指的文件, 每次写入sizeof(s
12、truct st)大小的字节例 float f2; file *fp; fp=fopen(“aa.dat”,“rb”); fread(f,4,2,fp);for(i=0;i0 向后移动0 向前移动起始点文件开始 seek_set 0文件当前位置 seek_cur 1文件末尾 seek_end 2例 fseek(fp,100l,0); fseek(fp,50l,1); fseek(fp,-10l,2); ftell函数v函数原型: long ftell(file *fp)v功能:返回位置指针当前位置 (用相对文件开头的位移量表示)v返值:成功,返回当前位置指针位置;失败,返回-1l,例 磁盘文件
13、上有3个学生数据,要求读入第1,3学生数据并显示main() int i; file *fp; if(fp=fopen(studat,rb)=null) printf(cant open filen);exit(0); for(i=0;i3;i+=2) fseek(fp,i*sizeof(struct stu),0); fread(&studi,sizeof(struct stu),1,fp); printf(%s %d %d %sn, ,studi.num,studi.age,studi.addr); fclose(fp);#include struct stu int num; char name10; int age; char addr15;stud3;例 求文件长度(ch12_101.c)#includestdio.h main() file *fp;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年环境管理体系3篇
- 2024年果园景观使用权合同
- 湄洲湾职业技术学院《数学建模1》2023-2024学年第一学期期末试卷
- 2024年度民办学校校长任期综合评价合同3篇
- 2024年度医院医疗质量管理员聘用协议3篇
- 2024年度水车租赁及环保技术应用合同范本3篇
- 2024年权益让渡协议全书
- 2025三方房屋租赁合同
- 2025年货运从业资格证在那里考
- 2024年度高速公路服务区充电停车位租赁合同模板3篇
- 小儿全麻患者术后护理
- 黑龙江省哈尔滨市2023-2024学年八年级上学期语文期末模拟考试试卷(含答案)
- 理论力学(浙江大学)知到智慧树章节答案
- 云南省普通高中2023-2024学年高一上学期1月期末学业水平考试技术试卷
- 2024年百科知识竞赛题库及答案(共三套)
- JGJ-T490-2021钢框架内填墙板结构技术标准
- 2024年移动解决方案经理认证考试题库大全-中(多选题)
- 破碎锤项目营销计划书
- 愚公移山英文 -中国故事英文版课件
- 国开经济学(本)1-14章练习试题及答案
- 三相桥式有源逆变电路的仿真Word版
评论
0/150
提交评论