IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

bug avec dirent


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut bug avec dirent
    bonjour à tous, je suis en train de faire une fonction qui permet de collecter des images dans un dossier mais j'ai un bug au niveau de ent->d_name je pense mais je n'arrive pas à trouver quoi :/

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    int compteur = 0;
    const char * courant=".";
    const char * parent="..";
    struct dirent* ent = NULL;
    IplImage * tempo;
     
        while ( ((ent=readdir(dir)) != NULL) || (compteur<=nombre) )
        {	
    		puts("1");
            if ( (ent->d_name!=courant) && (ent->d_name!=parent)) /*  Et n'est pas le dossier parent non plus */
    			{
    				puts("2");
    				printf("%s",ent->d_name);
    				tempo=cvLoadImage(ent->d_name,1);
    				puts("3");
    				cvCopy(tempo,tab3D[compteur],0);
    				compteur++; /* Alors on incrémente le compteur */
    			}
        }
    Les puts("x"); c'était juste des contrôles visuels dans le terminal ^^

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( (ent->d_name!=courant) && (ent->d_name!=parent))
    strcmp !
    Si le type de "ent->d_name" est bien un char*
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    au départ j'avais fait avec strcmp mais ça bugait aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( !(strcmp(ent->d_name,courant)) && !(strcmp(ent->d_name,parent)))
    je viens de tester ça bug à strcmp, si je remets comme avant ça bug au printf("%s",ent->d_name).

    EDIT: j'ai peut-être trouvé, j'ai fait une fonction qui compte le nombre de fichier avant, la position est peut-être restée à la fin du dossier non ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    résolu, c'était juste ça !
    et voila !

  5. #5
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Ah... oui en effet !
    C'est de l'effet de bord pur et dur ça aussi.

    Mais je suis convaincu que le strcmp va aussi te régler un problème (essaye de printer le contenu, et tu verras que les "." et ".." ne sont pas filtrés il me semble)

    Peut être devrais-tu essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((strcmp(ent->d_name,courant) != 0) && (strcmp(ent->d_name,parent) != 0))
    (je vais t'avouer que je n'ai jamais osé laisser des "!" seuls, car j'ai toujours peur de me tromper dans le vrai/faux )

    Enfin dans tous les cas : affiche ce qui est filtré pour voir !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

Discussions similaires

  1. Bug avec le test de profondeur
    Par Tellmarch dans le forum OpenGL
    Réponses: 1
    Dernier message: 17/10/2004, 00h59
  2. Bug avec requete
    Par arsgunner dans le forum ASP
    Réponses: 8
    Dernier message: 14/06/2004, 16h25
  3. [C#] Bug (?) avec la propriété TransparencyKey de la Form
    Par FrigoAcide dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/05/2004, 14h14
  4. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo