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 :

Recherche de Fichiers.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut Recherche de Fichiers.
    Je voudrais rechercher uniquement les fichier Code :
    Comment faire, Voila mes essais
    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
    21
    22
    23
    24
    25
    WIN32_FIND_DATA File;
      HANDLE hSearch;
      BOOL re;
    
      hSearch=FindFirstFile("*.*", &File);//"*.exe" a la place du vert, ou...
      if(hSearch ==  INVALID_HANDLE_VALUE)
      {
       //return FALSE;
      }
      re = FindNextFile(hSearch, &File);re = FindNextFile(hSearch, &File);
      re=TRUE;
      i=0;
      do
      {
       /*if (!strcmp(File.cFileName,"*.exe*"))//J'ai essaié cela aussi.
       {*/
          i++;
          strcpy(NOM_FICHIER[i],File.cFileName);
          printf(" %2d : %s\n",i,NOM_FICHIER[i]);
       //}
       re = FindNextFile(hSearch, &File);
      } while(re);
    
      FindClose(hSearch);
    Si vous voyez comment faire...

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Je voudrais rechercher uniquement les fichier Code :
    Comment faire, Voila mes essais Si vous voyez comment faire...
    Ce code est incomplet et ne peut pas être testé...
    Ceci fonctionne [windows]:
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    #include <windows.h>
    #include <stdio.h>
     
    int main (void)
    {
       WIN32_FIND_DATA File;
       HANDLE hSearch = FindFirstFile("*.*", &File);
       if (hSearch != INVALID_HANDLE_VALUE)
       {
          char NOM_FICHIER[10][16];
          BOOL re;
          int i = 0;
          while ((re = FindNextFile(hSearch, &File)) == TRUE
                  && i < sizeof NOM_FICHIER / sizeof * NOM_FICHIER)
          {
             if (strstr(File.cFileName, ".exe") != NULL)
             {
                i++;
                NOM_FICHIER[i][0] = 0;
                strncat(NOM_FICHIER[i], File.cFileName, sizeof NOM_FICHIER[i] - 1);
                printf(" %2d : %s\n", i, NOM_FICHIER[i]);
             }
          }
          FindClose(hSearch);
       }
       return 0;
    }
    Pose des questions si tu ne comprends pas...

  3. #3
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ce code est incomplet et ne peut pas être testé...
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #include <stdio.h>
    #include <stdlib.h>
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
    #include <winable.h>
    #include <sys/types.h>
    #include <dirent.h>
     
    int main()
    {
      int i;
      char NOM_FICHIER[20][256],FICHIER_LIRE[20][256];
     
      WIN32_FIND_DATA File;
      HANDLE hSearch;
      BOOL re;
     
      hSearch=FindFirstFile("*.*", &File);
      if(hSearch ==  INVALID_HANDLE_VALUE)
      {
       //return FALSE;
      }
      re = FindNextFile(hSearch, &File);re = FindNextFile(hSearch, &File);
      re=TRUE;
      i=0;
      do
      {
       /*if (!strcmp(File.cFileName,"*.exe*"))
       {*/
          i++;
          strcpy(NOM_FICHIER[i],File.cFileName);
          printf(" %2d : %s\n",i,NOM_FICHIER[i]);
       //}
       re = FindNextFile(hSearch, &File);
      } while(re);
     
      FindClose(hSearch);
     
     
      Sleep( 5000 );
      return 0;
    }
    Je me demande si cela sera plus clair...


    Edit : j'ai essaié denlever le super flux

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Edit : j'ai essaié denlever le super flux
    Si tu as des problèmes de super flux ... http://www.nana.fr/

  5. #5
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Si tu as des problèmes de super flux ... http://www.nana.fr/


    Oui mais bon ca je peu trouver...

  6. #6
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    EMDEL
    ...
    Il pourais sembler que j'insiste, mais vous ne voulez pas me repondre, ou ne pouvez pas?

    Etre ou ne pas etre, telle est la question...

    PS : SUPER FLUX : Un petit je'ux de mots en passant, n'a jamais tué personne...

    EDIT : je n'avais pas vu votre edit ...
    ______Merci

  7. #7
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ce code est incomplet et ne peut pas être testé...
    Ceci fonctionne [windows]:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    #include <windows.h>
    #include <stdio.h>
    
    int main (void)
    {
       WIN32_FIND_DATA File;
       HANDLE hSearch = FindFirstFile("*.*", &File);
       if (hSearch != INVALID_HANDLE_VALUE)
       {
          char NOM_FICHIER[10][16];
          BOOL re;
          int i = 0;
          while ((re = FindNextFile(hSearch, &File)) == TRUE
                  && i < sizeof NOM_FICHIER / sizeof * NOM_FICHIER)
          {
             if (strstr(File.cFileName, ".exe") != NULL)
             {
                i++;
                NOM_FICHIER[i][0] = 0;
                strncat(NOM_FICHIER[i], File.cFileName, sizeof NOM_FICHIER[i] - 1);
                printf(" %2d : %s\n", i, NOM_FICHIER[i]);
             }
          }
          FindClose(hSearch);
       }
       return 0;
    }
    Pose des questions si tu ne comprends pas...
    Et bien ce qui est en gras en fait...
    Et en passant la != entre NULL et '0'...
    Et puis tant que j'y suis, j'ai une question anexe, certains fichiers, ont des espaces, et lorsque je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      char *nom_fichier=NOM_FICHIER[i];
      strcat(nom_fichier," 22");
      system(nom_fichier);
    , Cela ne va que jusqu'a l'espace(logique à mon avis, mais embetant... Enfin ce n'est pas qqc de prioritaire)

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    Et bien ce qui est en gras en fait...
    && i < sizeof NOM_FICHIER / sizeof * NOM_FICHIER)
    La partie de droite du < est une manière de déterminer le nomnre d'élements d'un tableau (on divise sa taille en bytes par la taille d'un élément.
    Le test sert à arréter la boucle quand le tableau est plein (ton code crashe chez moi, car j'ai plus de 20 fichiers dans mon répertoire).

    sizeof NOM_FICHIER[i] - 1)
    Retourne la taille de NOM_FICHIER[i] diminuée de 1 pour laisser une place au 0 final. strncat() utilisé correctement est un bon moyen de faire une copie sécurisée. Bien lire la doc.

    Et en passant la != entre NULL et '0'...
    NULL est une valeur connue et testable (vaut 0) qui caractérise un pointeur que l'on a pas le droit d'utiliser.
    '0' est est une constante caractère qui représente le caractère 0. Sa valeur dépend de l'implémentation. En ASCII, c'est 48 (30h).

    Et puis tant que j'y suis, j'ai une question anexe, certains fichiers, ont des espaces, et lorsque je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      char *nom_fichier=NOM_FICHIER[i];
      strcat(nom_fichier," 22");
      system(nom_fichier);
    , Cela ne va que jusqu'a l'espace(logique à mon avis, mais embetant... Enfin ce n'est pas qqc de prioritaire)
    C'est possible. Il faut alors encadrer le nom du fichier avec des "". Utilise un tableau de char annexe suffisamment grand, et sprintf()...

  9. #9
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    && i < sizeof NOM_FICHIER / sizeof * NOM_FICHIER)
    La partie de droite du < est une manière de déterminer le nomnre d'élements d'un tableau (on divise sa taille en bytes par la taille d'un élément.
    Le test sert à arréter la boucle quand le tableau est plein (ton code crashe chez moi, car j'ai plus de 20 fichiers dans mon répertoire).
    J'usque la ca va.
    sizeof NOM_FICHIER[i] - 1)
    Retourne la taille de NOM_FICHIER[i] diminuée de 1 pour laisser une place au 0 final. strncat() utilisé correctement est un bon moyen de faire une copie sécurisée. Bien lire la doc.
    OK donc il faut que je rajoute sizeof...
    NULL est une valeur connue et testable (vaut 0) qui caractérise un pointeur que l'on a pas le droit d'utiliser.
    NULL est un pointeur?
    '0' est est une constante caractère qui représente le caractère 0.
    et 0 sans les ' '? C'est NULL?
    Sa valeur dépend de l'implémentation. En ASCII, c'est 48 (30h).
    48(30h)????
    C'est possible. Il faut alors encadrer le nom du fichier avec des "". Utilise un tableau de char annexe suffisamment grand, et sprintf()...
    sufisament grand...ie?
    Pour encadrer, j'utilise strancat() 2 fois? une fois avant et une fois apres?

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par miron
    NULL est un pointeur?
    C'est une expression constante valant 0 qui sert à initialiser un pointeur à une valeur connue et testable qui signifie 'ne pas déréférencer'
    et 0 sans les ' '? C'est NULL?
    Dans un contexte pointeur, oui.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char *p = 0 /* p vaut NULL */
    int i= 0 /* i vaut 0 */
    48(30h)????
    48 est une valeur (exprimée en décimal). La même valeur en héxadécimal est 30. (en binaire 0011 0000)
    sufisament grand...ie?
    Vu qu'il faut des caractères en plus, il faut qu'il y ait la place dans le tableau de char de destination.
    Pour encadrer, j'utilise strancat() 2 fois? une fois avant et une fois apres?
    strncat()... Lourdingue. J'avais plutôt suggéré sprintf()...
    Fait comme tu veux...

  11. #11
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Citation Envoyé par miron
    Je voudrais rechercher uniquement les fichier Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HANDLE hSearch = FindFirstFile("*.exe", &File);

  12. #12
    Membre éclairé Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Par défaut
    Citation Envoyé par Mayti4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HANDLE hSearch = FindFirstFile("*.exe", &File);
    Merci j'avais resolu CE probleme. (Merci EMDEL)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Système][fichier] recherche de fichier dans tout le disque dur
    Par helonear dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 15/12/2010, 10h43
  2. Recherche dans fichiers
    Par Tchinkatchuk dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2005, 10h32
  3. Réponses: 14
    Dernier message: 25/10/2004, 21h33
  4. batch de recherche de fichier ...
    Par Félia dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 29/07/2004, 15h54
  5. Recherche support fichier
    Par sydiop dans le forum Informix
    Réponses: 5
    Dernier message: 18/03/2004, 10h15

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