C ça doit être une erreur de pointeur ?

Crillus Messages postés 192 Date d'inscription   Statut Membre Dernière intervention   -  
Crillus Messages postés 192 Date d'inscription   Statut Membre Dernière intervention   -
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 ^^

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
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   Statut Membre Dernière intervention   563
 
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