Votre question

Besoin d'aide pour une fonction qui merdouille utilisant opendir() (c++)

Tags :
  • mp3
  • Programmation
Dernière réponse : dans Programmation
17 Juin 2005 15:27:33

J'ai besoin d'aide :
La fonction ci-dessous ajoute dans une liste tous les fichiers MP3 contenus dans un répertoire et tous ses sous-répertoires.

Le problème, c'est que parfois elle provoque une "erreur de segmentation" et je ne vois pas où est l'erreur.

Si quelqu'un pouvait m'aider, ce serait sympa! :-D

recherche(string chemin)
{
DIR* dossier = opendir(chemin.c_str()); // ouvrir le dossier au chemin "chemin"
if(chemin[chemin.length()-1]== '/') //s'il y a un slash à la fin ...
chemin=chemin.substr(0,chemin.length()-1); // l'enlever
dirent *fd = NULL;
while(fd = readdir(dossier))
{
string nom=string(fd->d_name);
if(nom[0] != '.') // ignorer les dossiers '.' et '..'
{
if(opendir(string(chemin + '/' + fd->d_name).c_str())) //si c'est un dossier
recherche(string(chemin + '/' + fd->d_name)); //rappeller la fonction sur ce dossier
else if(nom.length()>4 && majuscule(nom.substr(nom.length()-4,4))==".MP3") // sinon si c'est un MP3
ajouteMP3Liste(string(chemin + '/' + fd->d_name)); // l'ajouter dans une liste
}
}
closedir(dossier);
}

Autres pages sur : besoin aide fonction merdouille utilisant opendir

17 Juin 2005 22:12:59

hello, bon je n'ai pas la librairie <dirent.h> donc je ne pourrais pas essayer ton bout de code.

Par contre y'a un truc qui m'interpelle :
  1. if(opendir(string(chemin + '/' + fd->d_name).c_str())) //si c'est un dossier


il te manque le closedir(), la tu as une fuite mémoire il me semble, non?
En plus, question de préférence perso, je trouve qu'il n'est pas très propre de faire un test if sur une fonction qui te renvoie un pointeur ou NULL.

bon courage
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS