Fseek против перемотки?

Я заметил два метода для возврата к началу файла

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);

Какая разница между этими методами?

Ответ 1

В основном это два разных способа выполнить одно и то же: установить указатель на начало файла. Единственное отличие состоит в том, что rewind также очищает индикатор ошибки.

Если вам нужен выбор, вы должны использовать fseek. Это связано с тем, что rewind не возвращает целое число, указывающее, удалось ли выполнить операцию.

Ответ 2

Если fseek() возвращает успех, он также очистит индикатор конца файла, тогда как rewind() не делает этого