第12章文件操作摘要.pptVIP

  • 16
  • 0
  • 约2.31万字
  • 约 62页
  • 2016-03-12 发布于湖北
  • 举报
第12章文件操作摘要.ppt

* * * * * * * * * * * * 访问文件时,是逐个字符(字节)进行的,为了知道当前访问到第几个字节,系统用文件读写位置标记指针表示当前访问位置。 文件打开时,文件读写位置标记指向第1 个字节,每访问完一个字节后,该指针将向后移动一个字节。因此可连续多次使用 fgetc函数,读取多个字符。应注意文件指针和文件读写位置标记指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件读写位置标记指针用以指示文件内部的当前读写位置,每读写一次,该指针向后移动1个字节,它不需在程序中定义说明,是由系统自动设置的。 * * * * * * * * * * * * * * * * * * * * * * * * * * 通过上面的例子,可以看到fprintf和 fscanf函数对文件读写,容易理解,使用方便。但是在从文件中读取时要将ASCII码转换为二进制形式再保存在内存中;输出时又要将内存中的二进制形式转换成字符,时间花费比较多。 * 前面介绍文件操作函数都是基于文件顺序读/写函数, 即在文件中有一个文件读写位置标记指针指向下一个要读/写的数据,该指针称为当前工作指针。每次从文件中读/写一个数据,该位置指针自动向后移动一个数据的位置,指向下一个要读/写的数据。 在实际文件处理中,用户常常要求随机读/写、多次反复读/写,这种情况下就需要相关的文件定位函数,强制位置指针指向指定位置。 * 12.5文件的定位--12.5.1 rewind函数 * 《C语言程序设计》 第5章 循环结构设计 rewind( 文件指针 ) rewind函数 函数没有返回值。 rewind函数是使文件读写位置标记指针重新返回文件的开头。 调用形式: * 《C语言程序设计》 第5章 循环结构设计 【例 12.5】使用rewind函数改写例题 12.3。 #include stdio.h #include stdlib.h #include string.h int main( ) { FILE *fp; char outstr[] = hello , C program! ; char instr[25] ; if( ( fp = fopen( data.txt ,w+ ) ) == NULL ) { printf( Can not open data.txt! ) ; exit( 0 ) ; } fputs( outstr , fp ) ; rewind( fp ) ; fgets( instr , strlen(outstr) + 1 , fp ) ; puts( instr ) ; fclose( fp ) ; return 0 ; } 12.5文件的定位--12.5.1 rewind函数 * 《C语言程序设计》 第5章 循环结构设计 运行结果: 12.5文件的定位--12.5.1 rewind函数 程序分析: 第一次将字符串“hello , C program!”内容写入文件 data.txt中,此时文件读写位置标记指针已指到文件末尾。执行 rewind 函数,使文件的位置指针重新定位在文件 data.txt 开头。 12.5文件的定位--12.5.2 fseek函数 * 《C语言程序设计》 第5章 循环结构设计 fseek( 文件指针,位移量,起始点 ) fseek函数 函数参数中,起始点可按下表规定方式取值,可以用数字,也可用标准C规定的符号常量,fseek函数参数起始点值的表示如表 12-2 所示。 fseek函数控制文件读写位置标记指针对文件进行随机读/写。 调用形式: 12.5文件的定位--12.5.2 fseek函数 * 《C语言程序设计》 第5章 循环结构设计 fseek( 文件指针,位移量,起始点 ) fseek函数调用形式: 位移量表示从起始点开始移动的字节数。需要注意的是: (1) 位移量必须是长整型数据,若使用常整数表示位移量时,必须在其后加L后缀; (2) 位移量是正整数,文件读写位置标记指针向文件末尾方向移动,若位移量是负整数,则向文件开始方向移动。 12.5文件的定位--12.5.2 fseek函数 * 《C语言程序设计》 第5章 循环结构设计 fseek( 文件指针,位移量,起始点 ) fseek函数调用形式: 例如: fseek( fp , 240

文档评论(0)

1亿VIP精品文档

相关文档