fseek  função

Protótipo

int fseek (FILE * fluxo, int deslocamento, int origem);

Descrição

Reposiciona o indicador de posição do fluxo em função do deslocamento.

Caso o fluxo tenha sido aberto em modo texto, existem dois tipos de chamadas possíveis: - O deslocamento deve ser zero e qualquer origem pode ser utilizada. - O deslocamento deve ser o valor retornado por uma chamada prévia a função ftell. A única origem permitida é SEEK_SET.

Caso o fluxo tenha sido aberto em modo binário, a nova posição do indicador é modificada em exatamente deslocamento bytes. A nova posição depende da origem. Ver a tabela nos parâmetros para mais detalhes.

Além de modificar o indicador de posição, fseek também limpa o indicador de fim de arquivo (EOF) e desfaz os efeitos causados por prévias chamadas a função ungetc.

Parâmetros

fluxo - Fluxo a ter seu indicador de posição alterado.

deslocamento - Diferença de posição relativa à origem.

origem - De onde partirá o deslocamento de posição.

Origem

Referência

SEEK_SET

Começo do arquivo

SEEK_CUR

Posição atual do fluxo

SEEK_END

Fim do arquivo

Valor de retorno

Em caso de sucesso, 0. Um valor numérico diferente de zero é retornado caso contrário.

Caso um erro de leitura ou escrita ocorra, o indicador de erro (ferror) do fluxo é setado e o indicador de posição não é afetado.

Exemplo
#include <stdio.h>

int main() {
    FILE* arquivo = fopen("arquivo.txt", "wb"); // b indica modo binário
    if(arquivo == NULL) {
        fprintf(stderr, "Erro ao tentar abrir arquivo.txt.");
        return 1;
    }

    char texto[64];

    fputs("String de teste", arquivo);
    fseek(arquivo, 0, SEEK_SET);
    fgets(texto, 64, arquivo);
    fclose(arquivo);

    printf("%s\n", texto); // imprime String de teste

    return 0;
}
Veja também

rewind função