Рубрики

fseek () против перемотки () в C

В C, fseek () следует отдавать предпочтение перед rewind ().

Обратите внимание на следующий текст стандарта C99:
Функция перемотки устанавливает индикатор положения файла для потока, на который указывает поток, в начало файла. Это эквивалентно

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

за исключением того, что индикатор ошибки для потока также очищается.

Этот следующий пример кода устанавливает индикатор позиции файла входного потока обратно в начало, используя rewind (). Но нет способа проверить, была ли перемотка () успешной.

int main()

{

  FILE *fp = fopen("test.txt", "r");

  

  if ( fp == NULL ) {

    / * Ошибка открытия ручки * /

  }

  

  / * Выполнить некоторую обработку с файлом * /

  

  rewind(fp);  / * нет возможности проверить успешность перемотки * /

  

  / * Сделаем еще немного прецессии с файлом * /

  

  return 0;

}

В приведенном выше коде fseek () можно использовать вместо rewind (), чтобы увидеть, была ли операция выполнена успешно. Следующие строки кода можно использовать вместо перемотки (fp);

if ( fseek(fp, 0L, SEEK_SET) != 0 ) {

  / * Обработка ошибки репозиции * /

}

Источник:
https://www.securecoding.cert.org/confluence/display/seccode/FIO07-C.+Prefer+fseek%28%29+to+rewind%28%29

Эта статья предоставлена Рахул Гупта . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

fseek () против перемотки () в C

0.00 (0%) 0 votes