Udostępnij za pośrednictwem


fseek, _fseeki64

Przesuwa wskaźnik pliku w określonej lokalizacji.

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

Parametry

  • stream
    Wskaźnik na FILE strukturę.

  • offset
    Liczba bajtów z origin.

  • origin
    Początkowe położenie.

Wartość zwracana

Jeśli to się powiedzie, fseek i _fseeki64 zwraca wartość 0.W przeciwnym wypadku zwraca wartość różną od zera.Na urządzeniach niezdolny do znalezienia wartość zwracana jest niezdefiniowany.Jeśli stream jest pusty wskaźnik, lub jeśli origin nie jest jedną z wartości dozwolonych opisane poniżej, fseek i _fseeki64 wywołania obsługi nieprawidłowy parametr, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może być kontynuowane, te funkcje ustawiają errno na EINVAL i zwracają wartość -1.

Uwagi

fseek i _fseeki64 funkcje ruchów wskaźnika pliku (jeśli istnieje) skojarzone z stream do nowej lokalizacji, która jest offset bajtów z origin*.* Następna operacja w strumieniu odbywa się w nowym miejscu.W strumieniu otwarty do aktualizacji następna operacja może być odczytu lub zapisu.Pochodzenie argument musi mieć jedną z następujących stałych zdefiniowanych w STDIO.GODZ.:

  • SEEK_CUR
    Bieżąca pozycja wskaźnika pliku.

  • SEEK_END
    Koniec pliku.

  • SEEK_SET
    Początek pliku.

Można użyć fseek i _fseeki64 , aby przesunąć kursor w dowolnym miejscu w pliku.Wskaźnik może być także umieszczony poza końcem pliku.fseeki _fseeki64 czyści wskaźnik końca pliku i neguje efekt wszelkie uprzednie ungetc wywołuje przeciwko stream.

Po otwarciu pliku na dołączanie danych bieżącej pozycji w pliku zależy od ostatniej operacji We/Wy nie przez gdy nastąpi następny zapis mogą się pojawić.Jeśli jeszcze nie powstała żadnej operacji We/Wy na pliku otwartym dołączania, położenie pliku jest na początku pliku.

Dla strumieni otwartych w trybie tekstowym fseek i _fseeki64 ograniczone zastosowanie, ponieważ mogą powodować przewozu powrotu-znak wysuwu wiersza tłumaczenia fseek i _fseeki64 dawać nieoczekiwane wyniki.Jedynym fseek i _fseeki64 operacje gwarantowane na strumieni otwartych w trybie tekstowym są:

  • Poszukiwanie z przesunięciem 0 w stosunku do wartości pochodzenia.

  • Poszukiwanie od początku pliku wartość przesunięcia zwrócony w wyniku wywołania ftell podczas korzystania z fseek lub _ftelli64 podczas korzystania z _fseeki64.

Również w trybie tekstowym, CTRL + Z jest interpretowana jako znak końca pliku na wejściu.W przypadku plików otwartych do odczytu/zapisu fopen i wszystkich powiązanych procedur Wyszukaj CTRL + Z końcem pliku i usunąć go, jeśli to możliwe.To zrobić, ponieważ za pomocą kombinacji fseek i ftell lub _fseeki64 i _ftelli64, aby przenieść w pliku, który może powodować kończy CTRL + Z fseek lub _fseeki64 będzie działać nieprawidłowo w pobliżu koniec pliku.

Gdy CRT otwiera plik, który rozpoczyna się z znacznik porządku bajtów (BOM), wskaźnik pliku jest umieszczony za BOM-u (to znaczy na początku rzeczywistej zawartości pliku).Jeśli masz do fseek na początku pliku, należy użyć ftell Aby uzyskać początkowego położenia i fseek do niego, a nie do pozycji 0.

Ta funkcja powoduje zablokowanie inne wątki podczas wykonywania i dlatego wątków.Aby uzyskać informacje na temat wersji bez blokady, zobacz _fseek_nolock, _fseeki64_nolock.

Wymagania

Funkcja

Wymagany nagłówek

fseek

<stdio.h>

_fseeki64

<stdio.h>

Dodatkowe informacje o zgodności – zobacz: Zgodność we Wprowadzeniu.

Przykład

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

Odpowiednik w programie .NET Framework

Zobacz też

Informacje

We/Wy strumienia

fopen, _wfopen

ftell, _ftelli64

_lseek, _lseeki64

przewijanie