Pages : 1
#1 Le 02/04/2006, à 05:59
- Renorems
Comment afficher un guint64 ?
Bonjour,
Je programme en ce moment un petit truc pour m'afficher la taille d'un répertoire.
Voici une partie du code :
void
AfficheTaille(guint64 N)
{
if (N < 1024)
printf("%lld o", (unsigned long long) N);
else if (N < 1024 * 1024)
printf("%lld ko", (unsigned long long) N / 1024);
else if (N < 1024 * 1024 *1024)
printf("%lld Mo", (unsigned long long) N / 1024 / 1024);
else
printf("%lld Go", (unsigned long long) N / 1024 / 1024 / 1024);
}
guint64
TailleFichierReg(gchar *Chemin)
{
struct stat StatObj;
stat(Chemin, &StatObj);
return StatObj.st_size;
}
guint64
TailleRep(gchar *Chemin)
{
DIR *Rep;
struct dirent *Obj;
guint64 Taille = 0;
Rep = opendir(Chemin);
while ((Obj = readdir(Rep)) != NULL)
{
if (strcmp(Obj->d_name, ".") && strcmp(Obj->d_name, ".."))
{
gchar *CheminComplet = g_strconcat(Chemin, "/", Obj->d_name, NULL);
if (EstUnRep(CheminComplet))
Taille += TailleRep(CheminComplet);
if (EstUnFichierReg(CheminComplet))
Taille += TailleFichierReg(CheminComplet);
}
}
closedir(Rep);
//printf("%s, %lld octet(s)\n", Chemin, Taille);
return Taille;
}
int main(int argc, char **argv)
{
printf("%s : ", argv[1]);
AfficheTaille(TailleRep(argv[1]));
printf("\n");
return EXIT_SUCCESS;
}
Mais j'ai un petit pb : j'ai l'impression que le programe me renvoie parfois des résultats bizarres (négatifs par exemple).
Est-ce que la méthode que j'ai utilisé est la plus propre ?
Sinon, comment faire ?
Hors ligne
Pages : 1