fseek, _fseeki64

Move o ponteiro de arquivo para um local especificado.

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

Parâmetros

  • stream
    Ponteiro para FILE estrutura.

  • offset
    Número de bytes de origin.

  • origin
    Posição inicial.

Valor de retorno

Se for bem-sucedido, fseek e _fseeki64 Retorna 0. Caso contrário, retornará um valor diferente de zero.Incapaz de busca de dispositivos, o valor retornado é indefinido.If stream é um ponteiro nulo, ou se origin não é um dos valores permitidos descritos abaixo, fseek e _fseeki64 chamar o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, essas funções conjunto errno para EINVAL e retornar -1.

Comentários

The fseek e _fseeki64 funções move o ponteiro de arquivo (se houver) associada stream para um novo local é offset bytes do origin*.* A próxima operação no fluxo ocorre no novo local.Em um fluxo em aberto para atualização, a próxima operação pode ser uma leitura ou gravar.A origem de argumento deve ser uma das seguintes constantes definidas na STDIO.H:

  • SEEK_CUR
    Posição corrente do ponteiro de arquivo.

  • SEEK_END
    participante do arquivo.

  • SEEK_SET
    Início do arquivo.

Você pode usar fseek e _fseeki64 Para reposicionar o ponteiro em qualquer lugar em um arquivo. O ponteiro também pode ser posicionado além do participante do arquivo.fseek and _fseeki64clears the end-of-file indicator and negates the effect of any prior ungetc calls against stream.

Quando um arquivo é aberto para acrescentar dados, a posição corrente do arquivo é determinada pela última operação de E/s, não pelos onde ocorrerá a próxima gravar.Se ainda não tiver ocorrido nenhuma operação de E/s em um arquivo aberto para acrescentar, a posição do arquivo é o início do arquivo.

For streams opened in text mode, fseek and _fseeki64have limited use, because carriage return–linefeed translations can cause fseek and _fseeki64to produce unexpected results.The only fseek and _fseeki64operations guaranteed to work on streams opened in text mode are:

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

  • Seeking from the beginning of the file with an offset value returned from a call to ftell when using fseekor _ftelli64when using_fseeki64.

Também no modo de texto CTRL+Z é interpretado sistema autônomo um caractere de participante de arquivo na entrada.Em arquivos abertos para leitura/gravação, fopen e todas as rotinas relacionadas verificar se há um CTRL+Z no participante do arquivo e removê-la se possível. This is done because using the combination of fseek and ftellor_fseeki64 and _ftelli64, to move within a file that ends with a CTRL+Z may cause fseek or _fseeki64 to behave improperly near the end of the file.

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

Esta função bloqueia outros threads durante a execução e, portanto, é thread-safe.Para obter uma versão sem bloqueio, consulte _fseek_nolock, _fseeki64_nolock.

Requisitos

Função

Cabeçalho necessário

fseek

<stdio.h>

_fseeki64

<stdio.h>

Para obter informações adicionais 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 );
}

File pointer is set to middle of first line. This is the file 'fseek.out'.

Equivalente do NET Framework

Consulte também

Referência

Fluxo de E/S

fopen, _wfopen

ftell, _ftelli64

_lseek, _lseeki64

retroceder