fread会移动文件指针吗?

Ric*_*ard 15 c file fread

简单的问题,

当我使用fread时:

fread(ArrayA, sizeof(Reg), sizeBlock, fp);
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*nan 29

是的,调用fread确实会移动文件指针.文件指针将按实际读取的字节数提前.如果fread出错,则调用fread后的文件位置未指定.


Add*_*ted 24

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

澄清: fread()是一种面向块的功能.标准原型是:

size_t fread(void *ptr,
             size_t size,
             size_t limit,
             FILE *stream);
Run Code Online (Sandbox Code Playgroud)

该函数从指向的流中读取并将读取stream的字节放入指向的数组中ptr,当满足以下任一条件时,它将停止读取:

  • 它已读取limit大小的元素size,或
  • 它到达文件的末尾,或
  • 发生读取错误.

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

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

  • 这个答案实际上并没有解决被问到的问题,即调用fread后文件指针发生了什么 (12认同)
  • 您的答案应以"是"开头,以回答标题中的问题. (7认同)