文件的随机读写

与文件的顺序读写不同,文件的随机读写是指可以从文件的任意位置开始读写数据

fseek函数

函数的返回值以及参数格式:

该函数的作用是将文件指针移动到指定的位置,从该位置开始读写。包含三个参数,第一个参数为文件指针,第二个参数为文件指针的偏移量,第三个参数为文件指针的起始位置。如果成功,则该函数返回值为0,否则,返回非0值。

光标的起始位置可以选择如下三种:

第一种是在文件开头开始移动,第二种是在当前位置开始移动,第三种是在文件末尾开始移动。

fseek函数的具体使用方法如下:

可以看到,刚开始读取时,读到文件中第一个字符a,随后文件指针向后移动,再次读取,读到第二个字符b,接下来使用fseek函数,将文件指针移动到距离文件开头为0的位置处,即移动到文件开头,再次进行读取,读取出来的字符还是a。

输出结果为:

ftell函数

函数的返回值以及参数格式:

ftell函数的作用是得到当前文件指针与文件开头的距离,只有一个参数,即文件指针,返回值为当前文件指针的位置。

ftell函数的具体使用方法如下:

可以看到,在文件读取完第一个字符a后,使用fseek函数使文件指针移动到距离文件末尾-3的位置处,即将文件指针移动到倒数第三个字符处,得到倒数第三个字符,随后又使用ftell函数求出文件指针与文件开头的距离。

输出结果为:

rewind函数

函数的返回值以及参数格式:

rewind函数的作用是将文件指针移动到文件的起始位置。该函数的参数为文件指针,无返回值。

rewind函数的具体使用方法如下:

可以看到,我们得到文件中第一个字符后,将文件指针移动到距离文件末尾-3的位置处,继续打印一个字符,接下来使用rewind函数将文件指针移动到文件的起始位置,再次打印一个字符。

输出结果为:

注:rewind(fp)与fseek(fp,0,SEEK_SET)作用相同。

feof函数的作用

feof 的作⽤是:当⽂件读取结束的时候,判断是读取结束的原因是否是:遇到⽂件尾结束

函数的返回值和参数格式如下:

该函数的参数为一个文件指针,如果正常遇到文件末尾结束,返回非0值,否则,返回0。

feof函数具体使用方法如下:

输出结果为:

注意:在⽂件读取过程中,不能⽤feof函数的返回值直接来判断⽂件的是否结束

ferror函数的作用

函数返回值和参数格式如下:

该函数的参数是一个文件指针,若在文件读写过程中遇到文件错误,返回非0值,否则,返回0。

ferror函数的具体使用方法如下:

输出结果为:

可以看到,文件正常读取结束,没有碰到文件错误,那么碰到文件错误是什么样的呢?

接下来我们手动让文件读写发生错误,来看看会输出什么错误信息。

输出结果为:

可以看到,输出结果为文件描述错误,就是指我们在读写文件过程中发生错误。

feof函数和ferror函数作用总结:

总的来说,就是文件结束的原因有两个:

  • 一是遇到文件末尾,正常结束,
  • 一是文件在读写过程中发生错误,非正常结束。

feof函数就是用来判断文件是否是遇到末尾结束的,如果正常遇到文件末尾结束,返回非0,否则返回0。

ferror函数是用来判断文件是否发生错误结束的,如果发生错误导致文件结束,返回非0,否则返回0。

相关推荐

  1. c++文件

    2024-07-17 14:14:02       53 阅读
  2. C++文件

    2024-07-17 14:14:02       65 阅读
  3. [C#]文件-1

    2024-07-17 14:14:02       51 阅读
  4. C++二进制文件

    2024-07-17 14:14:02       24 阅读
  5. python文件

    2024-07-17 14:14:02       35 阅读
  6. 文件

    2024-07-17 14:14:02       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 14:14:02       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 14:14:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 14:14:02       43 阅读
  4. Python语言-面向对象

    2024-07-17 14:14:02       54 阅读

热门阅读

  1. 使用云服务器的Docker安装MySQL 5.7

    2024-07-17 14:14:02       15 阅读
  2. svn ldap认证临时切换到本地认证

    2024-07-17 14:14:02       17 阅读
  3. 定期整理pycharm相关缓存

    2024-07-17 14:14:02       16 阅读
  4. Linux C++ 055-设计模式之状态模式

    2024-07-17 14:14:02       17 阅读
  5. MySQL left join、right join以及inner join的区别 ?

    2024-07-17 14:14:02       16 阅读
  6. 网络安全-网络安全及其防护措施5

    2024-07-17 14:14:02       18 阅读
  7. 数据结构课程设计:客房信息管理系统 基于c

    2024-07-17 14:14:02       18 阅读
  8. 微信小程序:声明式导航、刷新节流

    2024-07-17 14:14:02       19 阅读
  9. 苹果HEIC 数据转 PNG

    2024-07-17 14:14:02       16 阅读