int fseek (FILE * fluxo, int deslocamento, int origem);
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.
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 |
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.
#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;
}
rewind função