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