A função fseek () em C ++ define o indicador de posição do arquivo para o fluxo de arquivo fornecido.
A função fseek () é definida no arquivo de cabeçalho.
protótipo fseek ()
int fseek (FILE * stream, deslocamento longo, origem int);
Se o arquivo for aberto no modo binário, a nova posição do ponteiro do arquivo será exatamente os bytes deslocados da origem.
Se o arquivo for aberto em modo de texto, os valores suportados para deslocamento são:
- Zero: funciona com qualquer valor de origem, ou seja, SEEK_SET, SEEK_CUR e SEEK_END.
- Valor retornado por uma chamada para ftell (stream): Funciona apenas com a origem SEEK_SET.
Se o fluxo for orientado para largura, as restrições de ambos os fluxos de texto e binários são aplicadas, ou seja, o resultado de ftell é permitido com SEEK_SET e deslocamento zero é permitido a partir de SEEK_SET e SEEK_CUR, mas não SEEK_END.
A função fseek também desfaz os efeitos de ungetc e limpa o status de fim de arquivo, se aplicável.
Se ocorrer um erro de leitura ou gravação, ferror é definido e a posição do arquivo não é afetada.
Parâmetros fseek ()
- stream: O stream de arquivo a ser modificado.
- deslocamento: o número de caracteres a serem deslocados da origem.
- origem: posição usada como referência para adicionar ao deslocamento. Pode ter os seguintes valores:
Valor | Descrição |
---|---|
SEEK_SET | Início do arquivo |
SEEK_CUR | Posição atual do ponteiro do arquivo |
SEEK_END | Fim do arquivo |
fseek () Valor de retorno
- Em caso de sucesso, a função fseek () retorna zero, diferente de zero caso contrário.
Exemplo: Como funciona a função fseek ()?
#include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )
Quando você executa o programa, a saída será:
Nome: Erica Idade: 25 Cidade: Berlim