Compartilhar via


fseek, _fseeki64

Move o ponteiro de arquivo em um local especificado.

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

Parâmetros

  • stream
    Ponteiro a estrutura de FILE .

  • offset
    Número de bytes de origin.

  • origin
    Posição inicial.

Valor de retorno

Se tiver êxito, fseek e retorna 0 de _fseeki64 . Caso contrário, retornará um valor diferente de zero. Dispositivos pôde buscar, o valor de retorno será indefinido. Se stream for um ponteiro nulo, ou se origin não for um dos valores permitidos descritos abaixo, fseek e _fseeki64 invoca o manipulador inválido do parâmetro, conforme descrito em Validação do parâmetro. Se a execução puder continuar, essas funções definirão errno para EINVAL e retornarão -1.

Comentários

fseek e _fseeki64 funcionam move o ponteiro de arquivo (se houver) associado a stream para um novo local que esteja bytes de offset de origin*.* A próxima operação no fluxo ocorre no novo local. Em um fluxo aberto para a atualização, a próxima operação pode ser uma leitura ou uma gravação. A origem do argumento deve ser uma das seguintes constantes, definido em STDIO.H:

  • SEEK_CUR
    A posição atual do ponteiro de arquivo.

  • SEEK_END
    Fim de arquivo.

  • SEEK_SET
    Início do arquivo.

Você pode usar fseek e reposicionar _fseeki64 para o ponteiro em qualquer lugar em um arquivo. O ponteiro também pode ser posicionado antes do final do arquivo. fseek e _fseeki64desmarque o indicador de participante de Arquivo e negações o efeito de todas as chamadas anteriores de ungetc em stream.

Quando um arquivo é aberto com dados, a posição atual do arquivo é determinada pela última operação de E/S, não por onde a gravação seguinte ocorrerá. Se nenhuma operação de E/S ocorreu ainda em um arquivo aberto, anexando a posição do arquivo é o início do arquivo.

Para os fluxos abertos no modo de texto, fseek e _fseeki64têm uso limitado, porque as traduções de retorno- avanço de linha de carro podem causar fseek e _fseeki64a resultados inesperados. As únicas fseek e operaçõesde _fseeki64garantia do para trabalhar em fluxos abertos no modo de texto são:

  • Buscar com um deslocamento de 0 em relação a qualquer um dos valores de origem.

  • Buscar desde o início do arquivo com um valor de deslocamento retornado de uma chamada a ftell ao usar fseekou _ftelli64ao usar_fseeki64.

Também no modo de texto, CTRL+Z é interpretado como um caractere de participante de Arquivo na entrada. Em arquivos abertos leitura/gravação, fopen e qualquer verificação de rotinas relacionada para um CTRL+Z no final do arquivo e solte-o se possível. Isso é feito como usar a combinação de fseek e ftellou_fseeki64 e _ftelli64, para se mover dentro de um arquivo que termina com um CTRL+Z pode fazer com que fseek ou _fseeki64 se comportem de forma incorreta próximo do fim do arquivo.

Quando o CRT abre um arquivo que começa com uma marca de ordem de byte (BOM), o ponteiro de arquivo é posicionado após a BOM (isto é, no início do conteúdo real do arquivo). Se você tiver que fseek ao início do arquivo, use ftell ele obter a posição inicial e fseek em vez de para posicionar 0.

Essa função bloqueia out outros threads durante a execução e em virtude disso é seguro para threads. Para uma versão sem bloqueio, consulte _fseek_nolock, _fseeki64_nolock.

Requisitos

Função

Cabeçalho necessário

fseek

<stdio.h>

_fseeki64

<stdio.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

Exemplo

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

Equivalência do .NET Framework

Consulte também

Referência

E/S de fluxo

fopen, _wfopen

ftell, _ftelli64

_lseek, _lseeki64

rewind