C ça doit être une erreur de pointeur ?

Fermé
Crillus Messages postés 192 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 22 novembre 2013 - 25 févr. 2010 à 22:59
Crillus Messages postés 192 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 22 novembre 2013 - 2 mars 2010 à 18:40
Bonjour,

Voila, je cherche deux choses :

d'une part je voudrais d'abord afficher le total de fichiers d'un répertoire, puis,
d'autre part je voudrais afficher la liste des fichiers de ce répertoire.

pour le total, j'ai déjà trouvé :

void getTotal(DIR * dp)
{
	unsigned int n;
	struct dirent * dirp;
	n = 0;
	
	while ( (dirp = readdir(dp)) != NULL)
		n++;
	printf("-l = Total = %d\n", n);
}


seulement voila, une fois ce total effectué, on se retrouve en "fin de DIR" et du coup, je ne sais pas comment afficher la liste des fichiers par la suite.

est-ce que vous sauriez comment faire ? J'ai pensé à copier le DIR * avant l'appel de la fonction, histoire de conserver un pointeur sur le début du DIR mais ça ne marche pas, je me retrouve toujours en fin de répertoire.

DIR * dp2 = dp;     /*puis j'appelle la fonction*/
getTotal(dp);                     /*et malgré tout dp2 est aussi à la fin du dir et pas moyen de l'utiliser pour afficher le contenu du répertoire


est-ce que je suis suffisamment clair ? merci d'avance ^^
A voir également:

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
26 févr. 2010 à 08:20
Avec une copie de pointeur, c'est normal.
La solution c'est ça : https://linux.die.net/man/3/rewinddir
Je t'explique comment j'ai trouver en quelques clic :
premier lieu tu utilises readdir, il doit donc y avoir un lien avec cette fonction, alors tu va voir la page de manuel de readdir (man readdir sur internet depuis windows) et là, en bas il y a une liste de fonctions liés à readdir.
En général à partir de leur nom tu peut deviner ce qu'elle font, sinon tu explores les unes après les autre.
En général je m'en sort ainsi.
0
Crillus Messages postés 192 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 22 novembre 2013 563
2 mars 2010 à 18:40
Oh merci beaucoup ! c'est vrai que j'aurais du commencer par là et que je n'ai pas été fin, je devrais prendre l'habitude de fouiller un peu plus "utilement".

Merci beaucoup encore, cette fonction me sera d'une aide précieuse !
0