一起talk C栗子吧(第一百八十八回:C语言实例--文件定位一 )

时间:2023-02-05 20:02:38

各位看官们,大家好,上一回中咱们说的是反正弦函数的例子,这一回咱们说的例子是:文件定位。闲话休提,言归正转。让我们一起talk C栗子吧!


看官们,我们在前面的章回中介绍过文件,当时分别从文件描述符和文件指针两个角度介绍与文件操作相关的内容,我相信大家还记得,因此,在这里就不细说了,如果大家忘记的话,可以参考前面章回中的内容(点击这里可以查看)。今天我们介绍的内容是文件定位,它是一种基于文件指针的操作。

什么是文件定位呢?要回答这个问题,我们需要通过文件流来解释。我们打开文件后会建立相应的文件流,在文件流中都有文件位置,比如刚刚打开的文件,文件位置位于文件流开始处。在文件流中找到文件位置的操作就是文件定位。

为什么需要文件定位呢?我们对文件流会在进行读写操作时,文件位置会从文件开始向文件结尾处依次向前推进。这种推进是自动而且有顺序的,如果我们想要找到文件中间位置呢?那么就需要文件定位操作了。我们可以先定位到文件中间位置,然后移动来该位置就可以了。

标准库为文件定位提供了五个函数,详细如下:

       int fseek(FILE *stream, long offset, int whence);

       long ftell(FILE *stream);       

       int fgetpos(FILE *stream, fpos_t *pos);

       int fsetpos(FILE *stream, fpos_t *pos);

接下来,我们简单描述一下这些函数的功能

  • fseek 主要用来定位文件,通俗来讲就是从文件中的一个位置跳转到另一个位置;
  • ftell 主要用来返回当前正在操作的文件流在文件中的位置;
  • rewind 主要用来把文件流设置到文件开始处,可以理解为初始化文件位置。
  • fgetpos 主用来返回当前正在操作的文件流在文件中的位置,和ftell功能相同;
  • fsetpos 主要用来定位文件,通俗来讲就是从文件中的一个位置跳转到另一个位置,和fseek功能相同。

各位看官,关于文件定位的例子咱们就说到这里。更加详细的内容且听下回分解 。