[?] Dúvida [?]

1. [?] Dúvida [?]

João Fragoso
Göetia_0xFF

(usa Slackware)

Enviado em 24/11/2019 - 18:31h

Fala pessoal, hoje estou com um uma duvida. Existe alguma forma de pegar a quantidade de caracteres de um arquivo aberto pelo ponteiro "FILE" ?


  


2. Re: [?] Dúvida [?]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 25/11/2019 - 00:56h

Quantidade de bytes, sim. Abra o arquivo em modo binário, use fseek() para ir até o fim do arquivo, e ftell() pra dizer a posição em que ele se encontra, relativa ao início do arquivo.

Para arquivos texto, nos quais cada caráter lógico pode corresponder a mais de um byte dentro do arquivo, a única maneira garantida de ir para o final do arquivo é, imediatamente após abrir o arquivo, ler todo o conteúdo do arquivo com as funções de leitura de texto (fgetc(), fgets() e fscanf(), mas não fread()) até receber a sinalização de fim do arquivo. Se você quiser, nesse momento você poder usar fgetpos() para marcar essa posição, e depois usá-la com fsetpos() para voltar ao ponto marcado (ao contrário de ftell() e fseek(), que trabalham com um valor inteiro (mais precisamente long int) de bytes a partir da origem, fgetpos() e fsetpos() utilizam um tipo de dados opaco (pos_t) para representar posições do arquivo, e a única forma de obter um valor válido de posição é por meio de fgetpos(), o que inviabiliza deslocamentos para posições arbitrárias que não tenham sido obtidas com tal função).


... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts