简单的问题,
当我使用 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/