fgetpos  função

Protótipo

int fgetpos (FILE * fluxo, fpos_t * posicao);

Descrição

Retorna a posição atual do fluxo.

Essa função é diferente da ftell – a função ftell pode ser utilizada para retornar a posição atual do fluxo como um valor numérico, enquanto a função fgetpos preenche o objeto apontado pelo posicao com as informações da posição atual do fluxo. É possível utilizar a função fsetpos para retornar o fluxo para a posição que estava na chamada à fgetpos.

Parâmetros

fluxo - Fluxo a ter a posição lida

posicao - Ponteiro para um objeto fpos_t que será preenchido com as informações da posição

Valor de retorno

Em caso de sucesso, é retornado 0.

Em caso de erro, é retornado um valor diferente de zero e o errno é setado. Ver perror para mais informações.

Exemplo
#include <stdio.h>

int main() {
    FILE* arquivo = fopen("arquivo.txt", "r");
    if(arquivo == NULL) {
        fprintf(stderr, "Erro ao tentar abrir arquivo.txt.\n");
        return 1;
    }

    /* Armazena a posição inicial */
    fpos_t posicao;
    fgetpos(arquivo, &posicao);

    /* Lê um caractere */
    int c = fgetc(arquivo);
    
    /* Volta para a posição inicial */
    fsetpos(arquivo, &posicao); // o arquivo está na posição inicial novamente!
    if(c != fgetc(arquivo)) {
        fprintf(stderr, "O arquivo não voltou a posição inicial!\n"); // nunca deve ocorrer
    }
    fclose(arquivo);

    return 0;
}
Veja também

fsetpos função

fseek função

ftell função