在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基础课程》。