Condividi tramite


fseek, _fseeki64

Spostare il puntatore del file in un percorso specificato.

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

Parametri

  • stream
    puntatore a FILE struttura.

  • offset
    Numero di byte da origin.

  • origin
    posizione iniziale.

Valore restituito

Se l'operazione viene completata correttamente, fseek e _fseeki64 restituisce 0.In caso contrario, restituisce un valore diverso da zero.Nei dispositivi incapaci di trovare, il valore restituito è definito.se stream è un puntatore null, o se origin non è uno dei valori consentiti descritti di seguito, fseek e _fseeki64 richiamare il gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni impostate errno in EINVAL e restituiscono -1.

Note

fseek e _fseeki64 le funzioni sposta il puntatore del file (se presenti) associato stream in una nuova posizione in cui è offset byte da origin*.* L'operazione successiva nel flusso ha luogo nella nuova posizione.In un flusso aperto per l'aggiornamento, l'operazione successiva può essere letti o la scrittura.L'origine dell'argomento deve essere una delle costanti, definito in STDIO.H:

  • SEEK_CUR
    Posizione corrente del puntatore del file.

  • SEEK_END
    Fine del file.

  • SEEK_SET
    Inizio del file.

È possibile utilizzare fseek e _fseeki64 che il puntatore venga riposizionato qualsiasi posizione in un file.Il puntatore può essere posizionato oltre la fine del file.fseek e _fseeki64rimuove l'indicatore di fine file e annulla l'effetto della precedente ungetc chiamate a stream.

Quando un file viene aperto per aggiungere i dati, la posizione corrente del file è determinata dall'ultima operazione di I/O, non dalla posizione di seguito scrivono si verificano.Se nessuna delle operazioni di I/O nuovamente si è verificata in un file aperto per aggiungere, il percorso del file è l'inizio del file.

Per i flussi aperti in modalità testo, fseek e _fseeki64disporre di utilizzo limitato, poiché le conversioni di ritorno a capo-avanzamento shopping possono causare fseek e _fseeki64per produrre risultati imprevisti.L'unico fseek e _fseeki64le operazioni garantita utilizzare i flussi aperti in modalità testo sono:

  • Ricerca con un offset di 0 rispetto a uno dei valori di origine.

  • Ricerca dall'inizio del file con un valore di offset restituito da una chiamata a ftell quando si utilizzano fseeko _ftelli64quando si utilizzano_fseeki64.

Anche in modalità testo, CTRL+Z viene interpretato come carattere di fine file di input.In aprire file per la lettura/scrittura, fopen e qualsiasi controllo della routine correlato per un CTRL+Z alla fine del file e ne rimuove se possibile.Questa operazione viene eseguita perché utilizzare la combinazione di fseek e ftello_fseeki64 e _ftelli64, per spostarsi all'interno di un file che termina con un CTRL+Z può causare fseek o _fseeki64 per comportarsi in modo errato alla fine del file.

Quando il CRT apre un file che inizia con un indicatore dell'ordine dei (BOM) byte, il puntatore del file viene inserito dopo il BOM (ovvero all'inizio del contenuto del file).Se è necessario fseek all'inizio del file, utilizzare ftell per ottenere la posizione iniziale e fseek a anziché inserire 0.

Questa funzione viene bloccato da altri thread durante l'esecuzione quindi è thread-safe.per una versione non di blocco, vedere _fseek_nolock, _fseeki64_nolock.

Requisiti

Funzione

Intestazione di associazione

fseek

<stdio.h>

_fseeki64

<stdio.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

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

Equivalente .NET Framework

Vedere anche

Riferimenti

Flusso I/O

fopen, _wfopen

ftell, _ftelli64

_lseek, _lseeki64

rewind