返回介绍

9.3.1 文件游标的设置

发布于 2025-04-11 22:33:05 字数 2317 浏览 0 评论 0 收藏 0

可以通过 fseek 函数对文件游标进行设置,函数的原型如下:

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

参数 stream 为与所读写文件相关联的文件流;参数 offset 为偏移量,如果是正数表示向前的偏移量,即向文件尾方向移动的距离,如果是负数,则表示向后的偏移量,即向文件头方向移动的距离;参数 origin 为原始文件位置,即对文件游标进行偏移的基准点,3 种取值如表 9.2 所示。

表 9.2 origin 参数的 3 种取值

fseek 函数的功能为,将与 stream 相关联的文件游标设置到从 origin 处、偏移 offset 的位置。函数执行成功返回 0,若执行失败,则返回非零值。

下面用 Windows 自带的记事本程序打开 D 盘的 test.txt 文件,输入字符串“Test string!”并保存,如图 9.4 所示。

图 9.4 D 盘 test.txt 文件内容

在程序中以读取的模式打开该文件后,默认情况下,文件游标处于文件首,即所读取到的字符会是大写的字母 T。例如:

编译运行程序,结果如下:

The value of the variable ch is: T

如果在读取字符之前,通过 fseek 函数将文件游标向前偏移 5 个位置,就会得到第二个单词“string”的首字符,即小写字母 s。修改后的 if 语句中的代码如下:

在 fseek 函数中,我们将第二个参数设置为 5,即表示向前偏移 5 个位置,第三个参数设置为 SEEK_SET,即表示文件头。该条语句的功能就是将文件游标设置为自文件头开始,向前偏移 5 个位置处。

编译运行程序,结果如下:

The value of the variable ch is: s

由于开始打开文件时,文件游标就是处于文件头位置,因此,也可以将 fseek 函数的第三个参数设置为 SEEK_CUR,即表示将文件游标自当前位置,向前偏移 5 个位置。例如:

编译运行程序,会得到和之前相同的结果:

The value of the variable ch is: s

此外,还可以通过将 fseek 函数的第三个参数设置为 SEEK_END,并向后进行偏移的方式来读取字符串“string”的首字符 s。SEEK_END 表示文件尾,该位置上就是作为文件末尾标记的那个 EOF 字符。因此,将参数 offset 设置为–7,即从文件尾向后移动 7 个位置即可。例如:

编译运行程序,依然得到与之前相同的结果:

The value of the variable ch is: s

文件游标会自动通过数据的读写向前移动,也就是文件游标的当前位置会随着对文件的读写操作而不断发生变化。默认情况下,打开文件时,文件游标处于文件头,若读取 1 字节数据,文件游标就会向前偏移 1 个位置,若再读取 10 字节数据,文件游标就会再向前偏移 10 个位置,以此类推。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。