📜  fseek()vs rewind()在C中

📅  最后修改于: 2021-05-26 00:09:37             🧑  作者: Mango

在C语言中,应该优先使用fseek()而不是rewind()。

请注意以下文本C99标准:
快退函数将流指向的流的文件位置指示符设置到文件的开头。相当于

(void)fseek(stream, 0L, SEEK_SET)

除了还清除了流的错误指示符。

下面的代码示例使用rewind()将输入流的文件位置指示符设置回开头。但是无法检查rewind()是否成功。

int main()
{
  FILE *fp = fopen("test.txt", "r");
  
  if ( fp == NULL ) {
    /* Handle open error */
  }
  
  /* Do some processing with file*/
  
  rewind(fp);  /* no way to check if rewind is successful */
  
  /* Do some more precessing with file */
  
  return 0;
}

在上面的代码中,可以使用fseek()代替rewind()来查看操作是否成功。可以使用以下代码行代替rewind(fp);

if ( fseek(fp, 0L, SEEK_SET) != 0 ) {
  /* Handle repositioning error */
}

来源:
https://www.securecoding.cert.org/confluence/display/seccode/FIO07-C.+Prefer+fseek%28%29+to+rewind%28%29

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。