17

我注意到有两种方法可以返回文件的开头

FILE *fp = fopen("test.bin", "r")
fseek(fp, 0, SEEK_END);
rewind(fp);

FILE *fp = fopen("test.bin", "r")
fseek(fp, 0, SEEK_END);
fseek(fp, 0, SEEK_SET);

如果这些方法之间有什么区别?

4

2 回答 2

20

它们基本上是完成同一件事的两种不同方法:将指针设置为文件的开头。唯一的区别是rewind也清除了错误指示器。

如果可以选择,您应该使用fseek. 这是因为rewind不返回指示操作是否成功的整数。

于 2012-08-07T04:00:10.070 回答
3

如果fseek()返回成功,它也会清除文件结束指示符,rewind()而不会这样做

于 2012-12-21T00:51:36.280 回答