c语言程序设计(王勇)第16章文件-海贝.ppt

上传人:wuy****n92 文档编号:70104902 上传时间:2023-01-16 格式:PPT 页数:17 大小:300.50KB
返回 下载 相关 举报
c语言程序设计(王勇)第16章文件-海贝.ppt_第1页
第1页 / 共17页
c语言程序设计(王勇)第16章文件-海贝.ppt_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《c语言程序设计(王勇)第16章文件-海贝.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计(王勇)第16章文件-海贝.ppt(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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 *指针变量名;用法:FILE *

3、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)printf(“File open error!n

4、”);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;出错,为EOF例:char ch;ch=fgetc(fp);二、文件结束函数feof格式:feo

6、f(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(infile,r)=NULL)printf(Cannot open infile.n);exit(0);if(out=fopen(outfile,

7、w)=NULL)printf(Cannot open outfile.n);exit(0);while(!feof(in)fputc(fgetc(in),out);fclose(in);fclose(out);例 文件拷贝第七节 格式化输入输出格式:fscanf(文件指针,“格式控制串”,输入项表)功能:从文件指针所指的文件中按格式读取数据,存入输入项表中返值:成功,返回I/O的个数;出错或文件尾,返回EOF一、fscanf函数格式:fprintf(文件指针,“格式控制串”,输出项表功能:将输入项表中的数据按格式存入文件指针所指 的文件中返值:成功,返回I/O的个数;出错,返回EOF二、fpr

8、intf函数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;if(fp=fopen(test,w)=NULL)puts(cant open file);return;fscanf(stdin,%s%d,s,&a);fprintf(fp,%s%d,s,a);fclose(f

9、p);第八节 字符串输入输出格式:fgets(地址,n,文件指针)功能:从文件指针所指的文件中读取n-1个字符,存入 指定地址开始的存储单元中,返回这个地址一、fgets函数格式:fputs(字符串,文件指针功能:将字符串写入文件指针所指的文件中返值:成功,返回正整数,出错,返回EOF(-1)二、fputs函数说明:1.输出时字符串最后的0并不输出,也不自动加n2.形成的文件中字符串首尾相接,为便于阅读,可人为加入n说明:1.若碰到换行符或文件结束标志(EOF),读入结束2.该函数最多能读入 n-1 个字符3.读入结束,系统会自动在最后加一个0第九节 数据块输入输出函数 fread与fwrit

10、e一、fread函数例:若有Struct st char num8;float mk5;pers30;格式:fread(buffer,size,count,fp);功能:从文件中读出 count 个 size大小的数据块,存入buffer开始的空间中。i=0;fread(&persi,sizeof(struct st),1,fp);从fp所指的文件中读取1块大小为sizeof(struct st)的数据块,放入pers0开始的存储空间中,即给pers0中的各个成员赋值二、fwrite函数例:若有Struct st char num8;float mk5;pers30;格式:fwrite(buf

11、fer,size,count,fp);功能:将 从buffer开始的地址中,count 个 size大小 的数据块,写入fp所指的文件中 for(i=0;i30;i+)fwrite(&persi,sizeof(struct st),1,fp);将结构体数组的所有数据写入fp所指的文件,每次写入sizeof(struct 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

12、例 fseek(fp,100L,0);fseek(fp,50L,1);fseek(fp,-10L,2);ftell函数v函数原型:long ftell(FILE *fp)v功能:返回位置指针当前位置 (用相对文件开头的位移量表示)v返值:成功,返回当前位置指针位置;失败,返回-1L,例 磁盘文件上有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)

13、;fread(&studi,sizeof(struct stu),1,fp);printf(%s%d%d%sn,studi.name,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;char filename80;long length;gets(filename);fp=fopen(filename,rb);if(fp=NULL)printf(file not found!n);else fseek(fp,0L,SEEK_END);length=ftell(fp);printf(Length of File is%1d bytesn,length);fclose(fp);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com