Compartir a través de


fseek, _fseeki64

Mueve el puntero de archivo a una ubicación especificada.

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

Parámetros

  • stream
    Puntero a la estructura FILE.

  • offset
    Número de bytes de origin.

  • origin
    Posición inicial.

Valor devuelto

Si es correcto, fseek y _fseeki64 devuelve 0. De lo contrario, devuelve un valor distinto de cero. En los dispositivos incapaces de búsqueda, el valor devuelto es indefinido. Si stream es un puntero null, o si origin no es uno de valores permitidos descritos a continuación, fseek y _fseeki64 se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones establecen errno en EINVAL y devuelven -1.

Comentarios

fseek y _fseeki64 funciona se desplaza el puntero de archivo (si existe) asociado a stream a una nueva ubicación que está a bytes de offset de origin. La operación siguiente en la secuencia tiene lugar en la nueva ubicación. En una secuencia abierto para la actualización, la siguiente operación puede ser una lectura o una escritura. El origen del argumento debe ser una de las siguientes constantes, definido en STDIO.H:

  • SEEK_CUR
    Posición actual del puntero de archivo.

  • SEEK_END
    Final de archivo.

  • SEEK_SET
    Principio del archivo.

Puede utilizar fseek y _fseeki64 para colocar el puntero de nuevo en cualquier parte de un archivo. El puntero se puede colocar más allá del final del archivo. fseek y _fseeki64borra la marca de fin de archivo y anula el efecto de cualquier llamada anterior de ungetc con stream.

Si se abre para anexar datos, la posición del archivo actual está determinada por la operación de E/S última, no por donde escribir siguiente aparecería. Si ninguna operación de E/S todavía ha producido en un archivo abierto para anexar, la posición del archivo es el inicio del archivo.

Para las secuencias abierto en el modo de texto, fseek y _fseeki64limitados uso, porque las traducciones de retorno- avance de línea de carro pueden producir fseek y _fseeki64a resultados inesperados de producción. Únicos fseek y operacionesde _fseeki64garantizadas para trabajar en secuencias abierto en modo de texto son:

  • Realizar búsquedas con un desplazamiento de 0 en relación con cualquiera de los valores de origen.

  • La búsqueda desde el principio del archivo que devuelva un valor de desplazamiento de una llamada a ftell al utilizar fseeko _ftelli64al utilizar_fseeki64.

También en modo de texto, CTRL+Z se interpretan como un final de archivo de entrada. En archivos abierto para lectura/escritura, fopen y toda la comprobación para de rutinas relacionada un CTRL+Z al final del archivo y quítelo si es posible. Se hace esto porque utilizar la combinación de fseek y ftello_fseeki64 y _ftelli64, para desplazarse en un archivo que finaliza con un CTRL+Z puede hacer fseek o _fseeki64 para comportarse incorrectamente cerca del final del archivo.

Cuando abra CRT un archivo que comience con una marca de orden de bytes (BOM), el puntero de archivo se coloca después de BOM (es decir, al inicio del contenido real del archivo). Si tiene que fseek al principio del archivo, utilice ftell de obtener la posición inicial y fseek el en lugar de posición 0.

Esta función bloquea out otros subprocesos durante la ejecución y por consiguiente seguro para subprocesos. Para consultar una versión que no realiza el bloqueo, vea _fseek_nolock, _fseeki64_nolock.

Requisitos

Función

Encabezado necesario

fseek

<stdio.h>

_fseeki64

<stdio.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// 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 en .NET Framework

Vea también

Referencia

E/S de secuencia

fopen, _wfopen

ftell, _ftelli64

_lseek, _lseeki64

rewind