Поделиться через


fseek, _fseeki64

Перемещает указатель файла в указанное расположение.

int fseek( 
   FILE *stream,
   long offset,
   int origin 
);
int _fseeki64( 
   FILE *stream,
   __int64 offset,
   int origin 
);

Параметры

  • stream
    Указатель на FILE структура.

  • offset
    Количество байтов из origin.

  • origin
    Первоначальная позиция.

Возвращаемое значение

В случае успешного выполнения; fseek и _fseeki64 возвращает 0.В противном случае возвращается ненулевое значение.В устройствах неспособных поиск, undefined возвращаемое значение.If stream указатель null или если origin не является одно из описанных ниже значений, допустимых fseek и _fseeki64 вызовите недопустимый обработчик параметра, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то эти функции установки errno В EINVAL и равен -1.

Заметки

fseek и _fseeki64 функции перемещения указателя файла (если таковые имеются), связанный с stream в новое расположение, которое offset байты из origin*.* Следующая операция в потоке выполняется в новом месте.В потоке, открытом для обновления, следующая операция может быть доступна или записи.Начало координат аргумента должно быть одной из следующих констант определяется в STDIO.H:

  • SEEK_CUR
    Текущее положение указателя файла.

  • SEEK_END
    Конец файла.

  • SEEK_SET
    начало файла.

Можно использовать fseek и _fseeki64 переместить указатель в любом файле.Указатель также может располагаться за пределами файла.fseek и _fseeki64очищает индикатор конца файла и инвертирует результат any перед ungetc вызовы к stream.

При открытии файла для добавления данных, положение текущего файла определяется последней операцией ввода-вывода, где произошла следующая запись.Если ни одна из операций ввода-вывода, пока не произошла в файле, открытом для добавления позиция файла начало файла.

Для потоков, открытых в режиме текста fseek и _fseeki64использование имеют ограниченную, поскольку переводы строки экипажа могут привести к возвращени-перевода fseek и _fseeki64дать непредвиденные результаты.единственное fseek и _fseeki64операции гарантированные, чтобы работали в потоках, открытых в режиме текст:

  • Поиск с смещением по отношению к любым 0 значений начала координат.

  • Поиск с начала файла с значение смещения, возвращаемый в результате вызова ftell при использовании fseekOR _ftelli64при использовании_fseeki64.

Также в этом режиме текст, CTRL+Z, интерпретируется как символ конца файла на входе.В файлах, открытых для чтение/запись fopen весь связанный и проверка процедур для CTRL+Z в конце файла и удаляет его, если это возможно.Это делается, потому что используется комбинация fseek и ftellOR_fseeki64 и _ftelli64, перемещается в файле, который заканчивается CTRL+Z может вызвать fseek OR _fseeki64 функционировать неправильно в конце файла.

При открытии файла CRT, который начинается с порядком байтов mark (спецификацией), указатель файла помещается за спецификацией (то есть в начале фактического содержимого файла).если вы fseek в начало файла используйте ftell получить на первоначальную позицию и fseek на него, а не положение 0.

Эта функция ожидания блокирует другие потоки во время выполнения и поэтому потокобезопасным.Для non-блокируя версий см. в разделе _fseek_nolock, _fseeki64_nolock.

Требования

Функция

Обязательный заголовок

fseek

<stdio.h>

_fseeki64

<stdio.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

// crt_fseek.c
// This program opens the file FSEEK.OUT and
// moves the pointer to the file's beginning.
 
#include <stdio.h>

int main( void )
{
   FILE *stream;
   char line[81];
   int  result;

   if ( fopen_s( &stream, "fseek.out", "w+" ) != 0 )
   {
      printf( "The file fseek.out was not opened\n" );
      return -1;
   }
   fprintf( stream, "The fseek begins here: "
                    "This is the file 'fseek.out'.\n" );
   result = fseek( stream, 23L, SEEK_SET);
   if( result )
      perror( "Fseek failed" );
   else
   {
      printf( "File pointer is set to middle of first line.\n" );
      fgets( line, 80, stream );
      printf( "%s", line );
    }
   fclose( stream );
}
  
  

Эквивалент в .NET Framework

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

fopen, _wfopen

ftell, _ftelli64

_lseek, _lseeki64

rewind