收藏 分享(赏)

第10章 文件.ppt

上传人:hskm5268 文档编号:8832901 上传时间:2019-07-14 格式:PPT 页数:26 大小:292.50KB
下载 相关 举报
第10章  文件.ppt_第1页
第1页 / 共26页
第10章  文件.ppt_第2页
第2页 / 共26页
第10章  文件.ppt_第3页
第3页 / 共26页
第10章  文件.ppt_第4页
第4页 / 共26页
第10章  文件.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、C语言大学实用教程,2009年2月,哈尔滨工业大学计算机学院,,第10章 文件,本章内容,文件的随机输入/输出,文件概述,c文件操作的实现,文件的输入/输出,计算机的内存容易健忘,所以数据必须保存在硬盘、软盘、光盘和磁带等“不健忘”的外存上 这些能大量、永久保存信息的媒介,一般都以文件的形式给用户及应用程序使用 文件 一般指存储在外部介质上具有名字(文件名)的一组相关数据的集合,这些数据是以记录的形式存放的 用文件可长期保存数据,并实现数据共享 程序中的文件 在程序运行时由程序在磁盘上建立的一个文件,并通过写操作将数据存入该文件;或由程序打开磁盘上的某个已有文件,并通过读操作将文件中的数据读入

2、内存供程序使用,文件概述,文件缓冲区,程序数据区,输出一个字符,输出一个数据块,读入一个字符,读入一个数据块,输出文件缓冲区,输入文件缓冲区,磁盘,内存,外存,C的文件,可显示的字符流文件 ( ASCII码文件 )不可显示的字符流文件( 二进制文件 ),ASCII码形式,二进制形式存放,如:有一个整型数10000,是由一个个字符的数据顺序组成。顺序的字符流文件,数据必须按照存入的类型读出,才能恢复其本来面貌 公开的标准格式 如bmp、tif、gif、jpg和mp3等类型的文件 ,有大量软件能生成和使用这些类型的文件 也有不公开、甚至加密的文件格式 如Microsoft Word的doc格式就不

3、公开,所以至今还没有Word以外的其它软件能完美地读出doc文件,文件的格式,本章内容,文件的随机输入/输出,文件概述,c文件操作的实现,文件的输入/输出,数据文件的建立和使用(1),说明文件的数据类型(定义文件指针变量)FILE *变量名;,打开文件 把所指定的文件从磁盘上找到,并与缓冲区连接 把文件从磁盘上找到,即找到文件的文件控制块,并返回文件控制块的首址 程序和文件打交道时,只需和文件指针变量名打交道 打开文件函数调用语句文件指针变量名 = fopen (文件名,文件使用方式); C规定文件路径用双反斜杠 当文件不能打开,无法返回文件控制块首址时,返回的是空指针 NULL,文件指针变量

4、名,数据文件的建立和使用(2),文件内容的操作 从文件中读取数据、把数据输出到文件中或文件位置的定位 关闭文件fclose ( 文件指针变量 ); 程序和文件脱钩,指针不再指向指定文件名 输出结束时,缓冲区内容全部送入文件,本章内容,文件的随机输入/输出,文件概述,c文件操作的实现,文件的输入/输出,文件的输入输出(1),文件的字符输入输出函数,fgetc ( fp );,fputc ( str, fp );,功能:从指定文件fp中读入一个字符返回值:操作成功为输入的字符;失败或文件结束返回值为-1或(EOF),文件指针变量,功能:将str的值输出到指定的文件fp中 返回值:成功为输出的字符;

5、失败返回值为-1,要输出的字符,文件指针变量,#include main() FILE *fp;char *p = C language program;if( ( fp = fopen(e:data1,w) ) = NULL ) printf(This file cannot be opened.);exit(0);while( *p! = 0 )fputc ( *p, fp );p+;fclose ( fp ); ,阅读程序,指出该程序的功能,文件的输入输出(2),例题10-1,#include main() FILE *fp;char ch80;int i=0;if( ( fp = fo

6、pen(e:data1,r) = NULL ) printf(This file cannot be opened.);exit(0);chi= fgetc ( fp );while( chi != EOF )printf( “%c”, chi );i+;chi = fgetc ( fp );fclose ( fp ); ,文件的输入输出(3),例题10-2,文件的字符串输入输出函数,fgets ( str ,n , fp );,文件的输入输出(4),文件指针变量,一次从文件读入的字符个数,字符数组或初始化后的字符指针,功能:从指定fp文件中,输入指定的n-1个字符的字符串,把这些字符串放在指

7、定的str的内存地址中 返回值:成功为参数str指定的地址,失败或读到文件末尾时返回值为NULL 因此该函数从文件读取字符时,遇到下列情况之一结束: 读取了n-1个字符,返回str地址; 读到换行符n或字符串结束符0,返回str地址; 检测到文件尾,返回NULL,输出一个字符串的格式是,文件的输入输出(5),文件的字符串输入输出函数,fputs( str, fp );,功能:将str指向的字符串输出到指定的fp文件中 返回值:操作成功返回值为0,否则返回值为非0,文件指针变量,字符数组或初始化后的字符指针,#include main() FILE *fp;char ch80, filename

8、20;printf(“Please file name:”);gets(filename);if( fp = fopen( filename,“w“) ) = NULL ) printf(“cannot open filen“);exit(0); gets(ch);while( strcmp(ch,”#”) ) fputs ( ch, fp );fputs (n, fp);gets(ch);fclose ( fp ); ,例题10-3,文件的输入输出(5),格式化文件输入输出,printf ( “格式说明符”, ); scanf ( “格式说明符”, );fprintf ( fp, “格式说明

9、符”, ); fscanf ( fp, “格式说明符”, );,文件格式化输入输出函数,文件的输入输出(5),文件指针变量,格式说明符:%d、%f、%c、%s 数据文件中的数据必须用分隔符分开,最好用空格和回车,#include #include struct student long num;char name20;int Eng, Com, Math; ; main() int i, j, p, term, sum5=0;char filename20;struct student gread5,temp;FILE *fp;if (fp=fopen(“d:1“,“r“)= NULL )pr

10、intf(“cannot open file!n“);exit(0);,文件的输入输出(6),例题10-4,for ( i=0; i5; i+ )fscanf (fp, “%ld%s%d%d%d“, ,文件的输入输出(7),例题10-4,for( i = 0; i 4; i+) /* 按总分排序 */p=i;for ( j = i+1; j 5; j+ )if ( sum p sum j ) p = j;if ( i != p ) term = sum i ; sum i = sum p ; sum p = term;temp = gread i ;gread i = gread p ;rea

11、d p = temp;,例题10-4,for ( i=0; i5; i+ )fprintf (fp, “%ldt%st%dt%dt%dt%dn“, greadi.num, greadi.name, greadi.Eng, greadi.Com, greadi.Math, sumi );fclose ( fp ); ,例题10-4,二进制数据块输入输出函数,文件的输入输出(6),fread(缓冲区首地址,sizeof(数据类型),数据的个数,文件指针变量) fwrite(缓冲区首地址,sizeof(数据类型),数据的个数,文件指针变量),该函数是将磁盘(内存)中的二进制数据,每次输入(输出)一整

12、块到内存(磁盘),是内存中一块存储单元的首地址,数组名,或一个已初始化的指针,数据块的大小 = sizeof(数据类型) 数据的个数,本章内容,文件的随机输入/输出,文件概述,c文件操作的实现,文件的输入/输出,数据文件的随机输入输出(1),文件定位,这种对位置指针定位的操作称为文件的随机读写,调整文件位置指针的函数有三个:,文件位置指针定位函数 fseek 文件位置指针复位函数 rewind 文件位置指针查询函数 ftell,数据文件的随机输入输出(2),位置指针函数的一般格式:,fseek (文件指针变量,调整字节总数,调整起始位置);,rewind (文件指针变量);,ftell (文件指针变量);,指向要定位的文件,感谢大家的合作!,祝大家考试取得好成绩!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报