第9章保存程序数据.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章保存程序数据

第九章 保存程序数据 ;主要内容;在本章,将继续完善“学生信息管理系统”案例程序。本章可以实现对学生完整信息的长期保存,能将学生的基本信息保存在磁盘上。当需要的时候可以从磁盘上读出数据,当数据被修改的时候,能重新写回磁盘,保证磁盘上的数据和内存数据一致。具体包括: (1)将学生的完整信息保存在磁盘的指定位置; (2)在程序运行的时候可以加载指定文件中的学生信息;;它一般指存储在外部介质上数据的集合。操作系统是以文件为单位对数据进行管理的。 根据文件的组织形式,C语言将文件分为文本文件和二进制文件两种。 按文本文件存放数据时,每个字符占一个字节,并且按其ASCII码存储到文件中,所以文本文件也称为ASCII文件。它的每个字节放一个ASCII代码,代表一个字符。 按二进制文件存放数据,其存放形式与数据在内存中的存储形式相同,也就是说数据是按其在内存中的存储形式原样输出到磁盘上存放。所以不需要转换,从而可以提高效率而且也能节省存储空间。 在C语言中,对文件的读写都是通过库函数实现的。;文件的处理必须包括: 打开文件 读或写文件、 关闭文件;标准输入输出函数,用fopen() 函数来实现打开文件。 fopen函数的调用方式通常是: FILE *fs; fs=fopen(文件名,打开模式); 其中 fs是一个文件指针,文件指针是FILE类型,FILE类型已由系统声明,可直接使用。通过文件指针,可以对它所指向的文件进行各种操作。 fopen是一个系统函数,有两个参数,其中文件名包括文件所在的全部路径,路径的分隔符\应采用转义字符的形式。文件可以是文本文件,也可以是二进制文件。 打开模式是指定所要打开的文件读写方式,打开模式要用小写,并且要用双引号括起来 ;使用文件保存学生信息-打开文件;如果不能实现“打开”文件的任务,fopen函数将会带回一个出错信息,出错的原因可能是用“r”方式打开一个并不存在的文件;磁盘出故障;磁盘已经满了,无法建立一个新文件等。此时fopen函数将带回一个空指针值NULL。常常用下面的方法打开一个文件: if((fs=fopen(file1, r))==NULL) { printf(cannot open this file\n); exit(0); };fread函数和fwrite函数,一般调用形式为: fread(buffer,size,count,fs); fwrite(buffer,size,count,fs); 其中:buffer是一个指针,对fread来说,它是读入数据的存放地址,对fwrite来说,它是要输出数据的地址,都是指起始地址。 size要读写的字节数。 count要进行读写多少个size字节的数据项。 fs文件类型的指针。;Student *stu; stu = (Student *)malloc(total*sizeof(Student)); 假设学生的数据已经存放在磁盘文件中,并且存放了current个学生的信息,这时可以用下面的for语句和 fread函数读入current个学生的数据: for(i=0;icurrent;i++) fread((stu+i), sizeof(Student), 1, fs); 可以用fwrite函数把内存中的学生数据输出到磁盘文件中去: for(i=0;icurrent;i++) fwrite((stu+i), sizeof(Student), 1, fs);;fseek函数可以实现改变文件的位置指针。调用形式为: fseek(文件指针,位移量,起始点) 其中起始点用0、1和2代替,0代表“文件的开始”,1代表“当前位置”,2代表“文件的末尾”位移量是指以“起始点”为基点,向前移动的字节数(该位移量可以为正数,也可以是负数)。 ANSI C要求位移量是long型数据,这样当文件的长度大于64K时不会出问题。ANSI C标准规定在数字的末尾加一个字母L,表示是long型。 同时fseek函数一般用于二进制文件,因为文本文件要发生字符转换,计算位置时往往发生混乱。 可以用: succ = fseek(fs, 0, SEEK_END);使得fseek函数返回文件的末尾。; ftell()函数的作用是得到文件中的当前位置,用相对于文件开头的位移量来表示。由于文件中的位置指针经常移动,人们往往不容易知道当前的位置。用ftell函数可以得到当前的位置,如果ftell函数返回值为-1L,表示出错。如: i=ftell(fs); if(i==-1l) printf(error\n);;在使用完一个文件后应该关闭它,以防止它再

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档