前面已经介绍过,文件中有一个位置指针,指向当前读/写位置。当顺序读/写文件时,每次读/写一个字符,则每读/写一个字符,该位置指针自动向后移动,指向下一个字符。但是,在实际文件操作中,有时候并不是顺序读/写,而是常常只需要读/写文件中的某一指定部分。这就是文件的随机读/写问题。为了解决这一问题,通常的做法是移动文件的位置指针到需要读/写的位置,再进行读/写,这时就需要用到由C 语言提供的文件定位函数来实现。
移动文件内部位置指针的函数主要有3 个:rewind 函数、fseek 函数和ftell 函数。
1.rewind 函数
该函数的功能是使文件的位置指针移到文件的开头处。
一般的调用形式为:
其中,fp 为文件型指针,指向当前操作的文件。
说明:rewind 函数没有返回值,其作用在于,如果要对文件进行多次读/写操作,可以在不关闭文件的情况下,将文件位置指针重新设置到文件开头,从而能够重新读/写此文件。如果不使用rewind 函数,那么每次重新操作文件之前,都需要将该文件关闭后再重新打开。
2.fseek 函数
需要随机读/写文件时,必须能控制文件位置指针的移动,而C 语言提供的fseek 函数就是用来改变文件位置指针的,利用它可以将文件位置指针移动到指定的位置上。(www.xing528.com)
调用形式为:
其中,第一个参数fp 为文件指针;第二个参数offset 为偏移量,是long 型数据,如果为正数,表示正向偏移,为负数,表示负向偏移,具体从哪里开始偏移,则由第三个参数whence决定;第三个参数whence 是int 型常量,用来设定从文件的哪里开始偏移,可以取值为0、1或2。具体如下:0,文件开头;1,文件当前位置;2,文件末尾。
说明:fseek 函数用来将指定文件(fp 指针指向的文件)的位置指针移动到指定位置,该位置由offset 和whence 参数共同决定。如果执行成功,则文件位置指针会移动到由whence开始偏移offset 个字节的位置;如果该函数执行失败,则返回值为-1。
举例:
注意:fseek 函数一般只用于二进制文件,因为文本文件要发生字符转换,计算位置时往往不准确。
3.ftell 函数
由于文件中的位置指针常常会随着文件读/写操作的进行而移动,程序员往往会弄不清楚它的确切位置。而采用ftell 函数就可以得到位置指针的当前值,不过,是用相对于文件开头的位移量来表示的。如果ftell 函数返回值为-1L,则表示出错。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。