Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreur readdir [débutant]

    11 octobre 2018 à 14:42:16

    Bonjour, je dois faire dans le cadre d'un projet un petit programme analysant un répertoire et qui est capable de classer chaque fichiers qui s'y trouve en fonction d'une chaine présente dans le titre,

    pour cela j'utilise DIR / readdir pour acceder au répertoire et récuperer les noms, mais quand j'essaye de comparer avec un if(p->d_name == "main.cpp" )

      celui ci ne me retourne pas la réponse, je vous présente mon code et en fait appel à votre générosité pour m'aider a réussir ce if (je ne comprends pas vraiment mon erreur, si je print j'obtiens chaque nom de fichier, mais si je if je n'obtiens plus rien

    Merci

    #include <iostream>
    #include <stdio.h>
    #include <string>
    #include <windows.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <sys/stat.h>
    #include <time.h>
    #include <conio.h>
    
    
    using namespace std;
    
    int main()
    {
    
    
    
        DIR *dir;
        struct dirent *p;
        char *fic = NULL;
    
        dir=opendir("d:/utilisateurs/William/Desktop/dev/c++/tri2");
        while((p = readdir(dir))!=NULL)
        {
                fic = p->d_name;
    
    
                cout << fic << endl;
    
    
                if(fic == "main.cpp")
                {
                    cout << "ooooooo" << endl;
                }
        }
        closedir(dir);
        return 0;
    
    
     return 0;}
    



    -
    Edité par Smokof 11 octobre 2018 à 14:42:40

    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2018 à 16:12:33

      C'est du C, pas du C++. Et en C, tu ne peux pas comparer directement une litterale chaine avec char[]. Donc :

      - sois tu fais du C++ et tu utilises std::string (et std/boost filesystem)

      - sois tu utilises les fonctions du C de comparaison de chaines

      (HS : si tu suis un cours et qu'on t'a dit que c'etait du C++, on t'a menti)

      -
      Edité par gbdivers 11 octobre 2018 à 16:12:59

      • Partager sur Facebook
      • Partager sur Twitter
        12 octobre 2018 à 9:31:22

        Je suis ce qui marche sur codeblock xD sachant que j'ai pas internet sur le poste et que apparament il faut telechatelechatéléla librairie boost pour pouvoir l'utiliser, j'y ai pas vraiment accès, fin j'ai réussi a résoudre mon erreur je sais plus par quel procede, merci bien ;)
        • Partager sur Facebook
        • Partager sur Twitter
          12 octobre 2018 à 10:07:42

          Salut,

          Smokof a écrit:

          apparament il faut télécharger la librairie boost pour pouvoir l'utiliser


          le module filesystem a été intégré au standard C++17, donc si ton compilateur est à jour tu devrais pouvoir le manipuler

          Grosse erreur d'interdir Internet à un développeur x)
          M'enfin, si c'est secret defense, sécurité maximale etc... pas le choix :/
          Tu dois tout de même avoir un moyen d'obtenir les libs dont tu as besoin non ? Oo

          -
          Edité par romantik 12 octobre 2018 à 10:29:33

          • Partager sur Facebook
          • Partager sur Twitter
          Dream on, Dream on, Dream until your dream comes true

          erreur readdir [débutant]

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown