fread 如何知道它上次停止的位置?
How does fread know where it last stopped?
Fread 显然知道它最后停下的地方,我的意思是:
while(fread(buffer, 1, 1, file))
{
…
}
这个循环会在上次停止的地方继续下一次。我假设它只是将 file 指针向前移动,但是有人可以解释一下它是否完全一样吗?
函数fread
从一个流中读取,它不一定是一个文件。流也可以链接到 consoles/terminals。有些流是可搜索的并且有文件位置指示器,有些则没有。链接到实际文件的流通常有一个文件位置指示器。
函数fread
本身不推进任何文件位置指示器(它不调用fseek
)。它只是从流中读取。
如果流有文件位置指示符,那么只要在流上发生读取,runtime library 就会推进文件位置指示符。它对流上的所有读取执行此操作,而不仅仅是 fread
.
Fread 显然知道它最后停下的地方,我的意思是:
while(fread(buffer, 1, 1, file))
{
…
}
这个循环会在上次停止的地方继续下一次。我假设它只是将 file 指针向前移动,但是有人可以解释一下它是否完全一样吗?
函数fread
从一个流中读取,它不一定是一个文件。流也可以链接到 consoles/terminals。有些流是可搜索的并且有文件位置指示器,有些则没有。链接到实际文件的流通常有一个文件位置指示器。
函数fread
本身不推进任何文件位置指示器(它不调用fseek
)。它只是从流中读取。
如果流有文件位置指示符,那么只要在流上发生读取,runtime library 就会推进文件位置指示符。它对流上的所有读取执行此操作,而不仅仅是 fread
.