c - fread 是否移动文件指针?

标签 c file fread

简单的问题,

当我使用 fread 时:

fread(ArrayA, sizeof(Reg), sizeBlock, fp);

我的文件指针 fp 向前移动了?

最佳答案

回答:是的,文件指针的位置在读取操作后自动更新,以便连续的fread()函数读取连续的文件记录。

说明: fread() 是面向 block 的函数。标准原型(prototype)为:

size_t fread(void *ptr,
             size_t size,
             size_t limit,
             FILE *stream);

函数从stream指向的流中读取,并将读取到的字节放入ptr指向的数组中,当出现以下任一情况时,将停止读取是真的:

  • 它已经读取了 limit 个大小为 size 的元素,或者
  • 到达文件末尾,或者
  • 发生读取错误。

fread() 为您提供与 fgetc() 一样多的控制权,并且具有能够在单个 I/O 操作中读取多个字符的优势.事实上,如果内存允许,您可以将整个文件读入一个数组并在内存中完成所有处理。这具有显着的性能优势。

fread() 通常用于将固定长度的数据记录直接读取到结构中,但您可以使用它来读取任何文件。这是我阅读大多数磁盘文件的个人选择。

关于c - fread 是否移动文件指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10696845/

相关文章:

java - 不会在 SD 卡中创建文本文件

file - 文本文件浏览器

C fread 省略 0x0D

c++ - 如何使用 fread 按值读取文件?

c - 删除后在C中的链接列表中显示

sql - 与 DBMS 的内存通信

c - 链表故障列表未链接到头指针

c - 链式 ncurses 程序中的终端调整大小(fork/exec/wait)

linux - 为什么 Linux 中的文件只能有一个所有者?

c - 为什么 scanf() 不将 array 和 &array 视为相同的?