ftell, _ftelli64
Obtém a posição atual de um ponteiro de arquivo.
long ftell(
FILE *stream
);
__int64 _ftelli64(
FILE *stream
);
Parâmetros
- stream
Destino FILE estrutura.
Valor de retorno
ftelle _ftelli64 retornar a posição atual do arquivo.O valor retornado por ftell e _ftelli64 pode não refletir o deslocamento de byte físico para fluxos abertos no modo de texto, porque o modo de texto faz com que a tradução do carro e alimentação de linha.Use ftell with fseekor_ftelli64with_fseeki64 to return to file locations correctly.Sobre o erro, ftelle_ftelli64 chamar o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, essas funções retornam –1L e defina errno a uma das duas constantes, definidas no ERRNO.H.O EBADF constante significa que o stream argumento não é um valor de ponteiro de arquivo válido ou não faz referência a um arquivo aberto.EINVALsignifica uma inválido stream argumento foi passado para a função.Em dispositivos incapazes de busca (como, por exemplo, terminais e impressoras), ou quando stream não se refere a um arquivo aberto, o valor retornado é indefinido.
Consulte _doserrno, errno, _sys_errlist e _sys_nerr para obter mais informações sobre estes e outros, códigos de retorno.
Comentários
O ftell e _ftelli64funções recuperar a posição atual do ponteiro do arquivo (se houver) associada stream*.* A posição é expressa como um deslocamento em relação ao início do fluxo.
Observe que quando um arquivo é aberto para acrescentar dados, a posição atual do arquivo é determinada pela última operação de e/S, não por onde ocorrerá a próxima gravação.Por exemplo, se um arquivo é aberto para um acréscimo e a última operação foi uma leitura, a posição do arquivo é o ponto onde a próxima operação de leitura seria iniciado, não onde a próxima gravação seria iniciado.(Quando um arquivo é aberto para acrescentar, a posição do arquivo é movida para o final do arquivo antes de qualquer operação de gravação). Se nenhuma operação de e/S ainda tiver ocorrido em um arquivo aberto para acrescentar, a posição do arquivo é o início do arquivo.
No modo de texto, CTRL + Z é interpretado como um caractere de final de arquivo na entrada.Em arquivos abertos para leitura/gravação, fopen e todas as rotinas relacionadas verificar um CTRL + Z no final do arquivo e removê-lo, se possível.Isso é feito porque utilizando a combinação de ftell e fseek ou _ftelli64 e _fseeki64, para mover-se dentro de um arquivo que termina com um CTRL + Z pode causar ftell ou _ftelli64 se comporte incorretamente próximo ao final do arquivo.
Esta função bloqueia o segmento de chamada durante a execução e, portanto, é thread-safe.Para obter uma versão não-bloqueio, consulte _ftell_nolock.
Requisitos
Função |
Cabeçalho necessário |
Cabeçalhos opcionais |
---|---|---|
ftell |
<stdio.h> |
<errno.h> |
_ftelli64 |
<stdio.h> |
<errno.h> |
Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.
Exemplo
// crt_ftell.c
// This program opens a file named CRT_FTELL.C
// for reading and tries to read 100 characters. It
// then uses ftell to determine the position of the
// file pointer and displays this position.
#include <stdio.h>
FILE *stream;
int main( void )
{
long position;
char list[100];
if( fopen_s( &stream, "crt_ftell.c", "rb" ) == 0 )
{
// Move the pointer by reading data:
fread( list, sizeof( char ), 100, stream );
// Get position after read:
position = ftell( stream );
printf( "Position after trying to read 100 bytes: %ld\n",
position );
fclose( stream );
}
}
Equivalência do .NET Framework
System::IO::FileStream::position