1

我目前正在编写我自己的 fseek 函数实现,我想问几个原因会发生什么。他们来了:

  1. 如果搜索原点设置为SEEK_SETorSEEK_CUR并且下一个位置的结果超过文件大小?
  2. 如果搜索原点设置为SEEK_END并且下一个位置的结果小于 0

文件是否调整了位置以适应它,或者是否返回了一些错误代码(位置指针会发生什么情况)?

请帮忙。

4

1 回答 1

2

尝试 man fseek 以获取更多详细信息:

fseek() 函数为 stream 指向的流设置文件位置指示符。新位置(以字节为单位)是通过将偏移字节添加到 wherece 指定的位置来获得的。如果 wherece 设置为 SEEK_SET、SEEK_CUR 或 SEEK_END,则偏移量分别相对于文件开头、当前位置指示符或文件结尾。成功调用 fseek() 函数会清除流的文件结束指示符并撤消 ungetc(3) 函数对同一流的任何影响。

成功完成后,fgetpos()、fseek()、fsetpos() 返回 0,ftell() 返回当前偏移量。否则,返回 -1 并设置 errno 以指示错误。

于 2013-04-27T12:26:26.523 回答