版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、11.1 文件概述 11.2 标准文件操作 11.3 非标准文件操作,第11章 文件,11.1 文件概述,文件是指存放在外存储器上的信息的集合 磁盘上的所有信息均以文件的形式存储,每个文件具有一个惟一的名称,通过名称对文件进行读、写、修改或删除等操作 从广义上说,文件是指信息输入和输出的对象,磁盘文件、键盘、显示器、打印机等均可视为文件,11.1.1 文件,数据文件的存储形式 字符文件(文本文件) 数据以字符的形式出现,每个字符用一个ASCII 代码表示 二进制文件 按数据在内存中的二进制形式存储,11.1.2 数据文件的存储形式,文本文件和二进制文件,11.1.3 标准文件与非标准文件,利用
2、缓冲区将对磁盘文件的频繁逐次访问变为批量访问的做法称为标准文件操作,11.1.4 文件存取方式,标准I/O提供了4种文件存取方法 读写一个字符 读写一个字符串,将多个字符组成的字符串写入文件或从文件中读出。 格式化读写,根据格式控制指定的数据格式对数据进行转换存取。 成块读写,也称做按记录读写。 4种存取方式和C语言的对应的函数关系:,11.2.1 标准文件FILE结构指针,FILE类型 保存被使用的文件的有关信息 所有的文件操作都需要FILE类型的指针 FILE是库文件中定义的结构体的别名 注意不要写成struct FILE 举例 FILE *fp;,11.2 标准文件操作,FILE类型,t
3、ypedef struct short level; /*缓冲区满空程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*无缓冲则不读取字符*/ short bsize; /*缓冲区大小*/ unsigned char *buffer; /*数据缓冲区*/ unsigned char *curp; /*当前位置指针*/ unsigned istemp; /*临时文件指示器*/ short token; /*用于有效性检查*/ FILE;,11.2.2 标准文件的打开操作,函数原型 FILE *fopen
4、(char *filename,char *mode); 参数说明 filename:要打开的文件路径 mode:文件操作方式 返回值 若成功,返回指向被打开文件的指针 若出错,返回空指针NULL(0),文件操作方式,文件的打开举例,下面的程序打开一个由路径指明的文件: FILE * fp; if (fp fopen (c:chenstudent1.dat,wb) NULL) printf (File cannot be openedn); exit(1); else printf (File opened for writing and reading n); ,11.2.3 关闭标准文件,
5、函数原型 int fclose(FILE *fp); 参数说明 fp:要关闭的文件指针 返回值 若成功,返回0 若出错,返回EOF(-1) 不用的文件应关闭,防止数据破坏丢失,文件的关闭举例,下面是一个测试关闭文件成功与否的程序段: if (fclose (fp2)! 0) printf (n File cannot be closed); exit (1); else printf (n File is now closed);,11.2.4 标准文件读写操作,1.读写文件中字符的函数 : 从磁盘文件读取字符的函数是fgetc(),形式为: int fgetc (FILE *stream);
6、 详细说明 将一个字符写入磁盘文件的函数是fputc(),其形式为: int fputc (int ch,FILE *stream );详细说明 注:getc() 和 fgetc() 功能相同,putc() 和 fputc() 相同 应用举例,2.读写文件中字符串的函数 从磁盘文件读取字符串的函数是fgets(),形式为: char * fgets (char * str ,int n ,FILE * stream); 详细说明 将一个字符串写入磁盘文件的函数是 fputs(),其形式为: char * fputs (char * str ,FILE * stream) ; 详细说明 注:ge
7、tc() 和 fgetc() 功能相同,putc() 和 fputc() 相同 应用举例,3.格式化读写函数 函数原型 fscanf (FILE *stream,char *format,variablelist ); fprintf (FILE *stream,char *format,variablelist); 说明 与printf和scanf函数类似 从文件输入或输出到文件 应用举例,11.2.5 标准文件的随机读写,1.文件指针定位函数 文件位置指针 位置指针指向当前读写的位置 每次读写文件,位置指针都会相应移动 可以通过相关函数强制修改位置指针 相关函数 rewind函数 详细说明
8、 fseek函数 详细说明 ftell函数 详细说明,2.文件随机读写函数:fwrite和fread C语言标准文件随机读写函数分别为 fread()和fwrite() ,函数原型为: int fread (void * ptr,int size,int count ,FILE * stream); int fwrite ( void * ptr,int size,int count,FILE *stream); ptr 指针指向内存缓冲区,count 为数据项个数,每个数据项的长度为 size 个字节。stream 是文件指针变量。 应用举例,11.3 非标准文件操作,11.3.1 建立非标
9、准文件 非标准文件建立函数形式如下: int creat (char * str ,int mode); mode 指示文件操作方式 :,11.3.2 非标准文件打开和关闭 非标准文件打开函数形式如下: int open (char *filename,mode) ; mode 指定了文件操作代码符号,文件操作代码符号控制文件操作方式(具体信息请查阅课本) : 例如:open (datafile.dat ,O_RDONLY | O_BINARY); 非标准文件关闭函数形式如下: int close (int handle); 它关闭由文件代号 handle 指定的文件。 关闭成功函数返回0;否
10、则函数返回值为-1,11.3.3 非标准文件的读写 非标准文件读函数形式为: int read (int handle,void * buffer,int count); 函数从文件号 handle 指定的文件中,读取 count 个字节,送到由 buffer 指定的内存缓冲区中 : 例如:read (fd,buffer,64); 非标准文件写函数形式为: int write (int handle ,void buffer ,int count) 例如:write (fd1,buffer,128);,本章结束,再见!,同学们:,fgetc/getc函数,函数原型 int fgetc(FILE
11、 *fp); int getc(FILE *fp); 参数 fp:文件指针 返回值 若成功,返回输入的字符 若失败或文件结束,返回EOF,fputc/putc函数,函数原型 int fputc(int c, FILE *fp); int putc(int c, FILE *fp); 参数 c :要输出到文件的字符 fp:文件指针 返回值 若成功,返回输出的字符 若失败或文件结束,返回EOF,读写文件中字符的函数,void main() FILE *fp; char ch; if(fp = fopen (datafile.txt , r ) = NULL ) printf (file canno
12、t be opened n ); exit (1); while (ch = fgetc (fp) != EOF) fputc (ch,stdout); fclose (fp); ,fgets函数,函数原型 char *fgets(char *s, int n, FILE *fp); 返回值 若成功,返回s首地址;若失败,返回NULL 说明 从fp输入字符串到s中 输入n-1个字符,或遇到换行符或EOF为止 读完后自动在字符串末尾添加0,fputs函数,函数原型 int fputs(char *s, FILE *fp); 返回值 若成功,返回输出字符个数(或最后的字符) 若失败,返回EOF 说
13、明 字符串的结束标志0不会输出到文件 也不会在字符串末尾自动添加换行符,读写文件中字符串的函数,#include stdio.h void main() FILE *fp2 ; char buffer64 ; if (fp2=fopen (datafile2.txt,r) = NULL) printf (cant open file n) ; exit (1) ; while (!feof (fp2) If (fgets (buffer,64,fp2) != NULL) printf (%s ,buffer) ; fclose (fp2) ; ,格式化读写函数,#include stdio.h
14、 void main() FILE * fp6; char str 20; int age,i; float sum; if(fp6 = fopen (datafile5.txt,w) = NULL) printf (File connot be opened n); exit (1) ; printf (type str :); for(i = 0;i 1) printf (fp6,% s % d % f,str,age,sum); printf (type str,age,sum :); scanf (% s % d % f,str,/* 输入姓名、年龄和总成绩 */ fclose (fp
15、6); ,rewind函数,函数原型 void rewind(FILE *fp); 参数 fp:文件指针 功能 使文件位置指针重新返回文件开头,fseek函数,函数原型 int fseek(FILE *fp, long offset, int whence); 参数 fp:文件指针 offset:偏移量 whence:起始位置 功能 随机改变文件的位置指针,起始位置 SEEK_SET(0):文件开始 SEEK_CUR(1):文件当前位置 SEEK_END(2):文件末尾 举例 fseek(fp, 100L, SEEK_SET); fseek(fp, -10L, SEEK_CUR); fseek(fp, -20L, SEEK_END);,ftell函数,函数原型 long ftell(FILE *fp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年食品药品安全监管专项资金审计案例
- 2026年沙盘游戏在留守儿童团体心理辅导中的应用
- 2026年餐厅大众点评美团运营策略
- 小学科普知识地球科学
- 重症医学科感染性休克护理措施
- 大肠癌手术后护理措施
- ICU护理敏感指标
- 感染科院内感染防控规范
- 耳鼻喉科鼻窦炎手术后护理指导
- 全科医学科慢性病患者家庭护理计划
- 核电厂常规岛施工图设计文件内容深度规定 第9部分:水工工艺
- 2024建筑施工拉杆式悬挑脚手架安全技术规程
- 2024详解新版《公司法》课件
- 工伤知识与工伤预防培训
- 微机电惯性导航系统测试方法
- 屈原【六幕话剧】郭沫若
- 全球十大环境问题课件
- CJJ-T 135-2009 (2023年版) 透水水泥混凝土路面技术规程
- 人民日报金句摘抄
- 阳明计米器mc-262说明书
- 基于PLC的交通信号灯智能控制系统设计
评论
0/150
提交评论