Função de biblioteca C - fsetpos ()
Descrição
A função da biblioteca C int fsetpos(FILE *stream, const fpos_t *pos) define a posição do arquivo do dado streampara a posição fornecida. O argumentopos é uma posição dada pela função fgetpos.
Declaração
A seguir está a declaração da função fsetpos ().
int fsetpos(FILE *stream, const fpos_t *pos)
Parâmetros
stream - Este é o ponteiro para um objeto FILE que identifica o fluxo.
pos - Este é o ponteiro para um objeto fpos_t contendo uma posição obtida anteriormente com fgetpos.
Valor de retorno
Esta função retorna valor zero em caso de sucesso, ou então retorna um valor diferente de zero e define a variável global errno para um valor positivo, que pode ser interpretado com perror.
Exemplo
O exemplo a seguir mostra o uso da função fsetpos ().
#include <stdio.h>
int main () {
FILE *fp;
fpos_t position;
fp = fopen("file.txt","w+");
fgetpos(fp, &position);
fputs("Hello, World!", fp);
fsetpos(fp, &position);
fputs("This is going to override previous content", fp);
fclose(fp);
return(0);
}
Vamos compilar e executar o programa acima para criar um arquivo file.txtque terá o seguinte conteúdo. Em primeiro lugar, obtemos a posição inicial do arquivo usandofgetpos()e então escrevemos Hello, World! no arquivo, mas depois usamosfsetpos() função para redefinir o ponteiro de gravação no início do arquivo e, em seguida, sobrescrever o arquivo com o seguinte conteúdo -
This is going to override previous content
Agora vamos ver o conteúdo do arquivo acima usando o seguinte programa -
#include <stdio.h>
int main () {
FILE *fp;
int c;
fp = fopen("file.txt","r");
while(1) {
c = fgetc(fp);
if( feof(fp) ) {
break;
}
printf("%c", c);
}
fclose(fp);
return(0);
}
Vamos compilar e executar o programa acima para produzir o seguinte resultado -
This is going to override previous content