• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NameException

[Resolvido] Saber tamanho de um ficheiro

6 mensagens neste tópico

Boas,

Como posso saber o tamanho de um .txt em C? Existe alguma função para tal?

O que preciso, é após ler o path do stdin, dado pelo utilizador, que indica onde está o ficheiro a ser lido, saber o seu tamanho antes de ler qualquer byte do seu conteúdo...

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou percorres o ficheiro até não conseguires ler mais e contas os bytes, ou utilizas uma função do sistema operativo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, a solução que tenho implementada é mesmo essa... Ler até ao EOF. Mas fica muito ineficiente... Para um ficheiro de 1 ou 2kb, mal se nota, agora para 500 ou 600kb já se torna chato...

Sabes qual é a função do SO???  :wallbash:

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para Windows pode usar filelength procure no ficheiro io.h.

#include <stdio.h>
#include <io.h>

int main(){

FILE *fp;

if( (fp = fopen("X:\\NameException.txt", "rb")) != NULL){
	printf("-- %ld\n", filelength(fileno(fp)));
	fclose(fp);
}else{
	printf("Erro\n");
};
return 0;
};

Para melhor portabilidade use fseek e ftell.

#include <stdio.h>

int main(){

FILE *fp;

if( (fp = fopen("X:\\NameException.txt", "rb")) != NULL){
	fseek(fp, 0L, SEEK_END);
	printf("-- %ld\n", ftell(fp));
	fclose(fp);
}else{
	printf("Erro\n");
};
return 0;
};

Procure por filelengthi64, veja também  fseeko, ftello e stat.

Cumprimentos :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora