int fsetpos (FILE * fluxo, const fpos_t * posicao);
fsetpos altera a posição atual do fluxo para a posicao passada para a função. A posicao é obtida em uma chamada prévia à função fgetpos passando como argumento o mesmo fluxo.
A função limpa o indicador de EOF e erro do fluxo e remove qualquer efeito prévio de chamadas à função ungetc.
Após chamar fsetpos, a próxima operação pode ser tanto de entrada quanto de saída.
fluxo - Fluxo a ter a posição lida
posicao - Ponteiro para um objeto fpos_t que será utilizado para modificar a posição
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.
#include <stdio.h>
int main() {
FILE* arquivo = fopen("arquivo.txt", "w");
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);
/* Escreve Oi! no arquivo */
fputs("Oi!", arquivo);
// o arquivo agora contém "Oi!\n"
/* Volta para a posição inicial */
fsetpos(arquivo, &posicao);
/* Escreve Olá no arquivo */
fputs("Olá", arquivo);
// o arquivo agora contém "Olá\n"
fclose(arquivo);
return 0;
}
fgetpos função
fseek função
ftell função