网站大量收购独家精品文档,联系QQ:2885784924

chap11_文件读写讲述.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例11.4 例11.4代码见课本。 说明 语句“fprintf( stdout, %d %-8s\t%.2f\n, st.ID, st.name, st.score );”与语句“printf ( %d %-8s \t%.2f\n, st.ID, st.name, st.score );”是等效的。事实上,stdout就是默认的对应显示器的文件指针,stdin就是默认的对应键盘的文件指针。 文件读写 字符读写 字符串读写 格式化读写 块数据读写 块数据读写 块数据读写函数包括fwrite和fread两个函数,它们主要用于二进制文件的读写。 fwrite函数的原型如下: int fwrite( const void *buffer, int size, int n, FILE *fp ); 其中,buffer表示要输出数据的首地址,size为数据块的字节数,n为数据块的个数,fp是文件指针。 fwrite的功能是,从内存中的buffer地址开始,将连续n*size个字节的内容写入fp文件中。该函数的返回值是实际写入的数据块个数。 块数据读写 fread函数的原型如下: int fread( void *buffer, int size, int n, FILE *fp ); 其中,buffer表示要输入数据的首地址,size为数据块的字节数,n为数据块的个数,fp是文件指针。 fread的功能是,从文件fp中,连续读取n*size个字节的内容,并存入buffer指向的内存空间。该函数的返回值是实际读入的数据块个数。 例11.5 例11.5代码见课本。 说明 语句“fwrite( st, sizeof(st), 1, fp);”与“fwrite( st, sizeof(struct Student), 3, fp);”是等效的。 该程序显示器无输出,程序的输出结果存储在文件C:\computer.dat中。由于该文件是一个二进制文件,直接打开时显示的是乱码,所以还需要写一个程序来读这个二进制文件。 例11.6 例11.6代码见课本。 说明 选择文件读写函数时应与文件的类型相匹配。二进制文件使用二进制读写函数来操作。文本文件也应使用文本读写函数来操作。 对比本例和前两例可知,结构体类型的数据可以使用文本文件存储,也可以使用二进制文件存储。 例11.6 思考题:在本例中,如果去除while循环前面的fread语句,并将while中的语句做如下调整,是否可行? while( !feof(fp) ) { fread( st, sizeof(st), 1, fp ); printf( %d %-8s \t%.2f\n, st.ID, st.name, st.score ); } 内容提要 文件与文件指针 文件的打开和关闭 文件读写 位置指针的定位 应用举例 位置指针的定位 前面介绍的几组文件函数,读写操作完成后,位置指针都会往文件末尾顺序移动相应的距离。从本质上说,这些操作均属于文件的顺序读写。本节将介绍几个函数,可以对位置指针进行更改。借助于这几个函数,就可以实现文件的随机读写 相关的函数包括:rewind、fseek、ftell等。 位置指针的定位 rewind函数的原型如下: int rewind ( FILE *fp ); 其中fp为文件指针。该函数的作用是,使文件fp的位置指针重新指向文件头。 fseek函数的原型如下: int fseek ( FILE *fp, long offset, int from ); 其中,fp为文件指针,offset为移动的字节数,from为移动的起始位置。该函数的作用是,将文件指针从from开始移动offset字节。from的取值范围如下: 位置指针的定位 0 或者 SEEK_SET:起始位置为文件头。 1 或者 SEEK_CUR:起始位置为当前位置。 2或者 SEEK_END:起始位置为文件尾。 当offset为正数时,表示向文件末尾移动;反之,则表示向文件起始位置移动。需要注意的是,offset必须为长整型。 位置指针的定位 ftell函数的原型如下: long ftell(FILE *fp); 其中fp为文件指针。该函数的作用是,返回位置指针相对于文件头的位置,如果出错,则返回-1L。 位置指针的定位 例11.7 修改文本文件C:\dream.txt中的内容,将所有的小写字母改为大写字母。 while( ( ch = fgetc(fp) ) != EOF) { if ( ch = a ch = z) { ch -= 32; fseek ( fp, -1L,

文档评论(0)

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

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

1亿VIP精品文档

相关文档