Recherche de fichier en C++
warskull
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
loupius Messages postés 697 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de développer un programme en C++ qui permet de saisir un nom ou une partie du nom d'un fichier pour ensuite le rechercher parmi des dossiers et des sous-dossiers.
Cependant je n'arrive pas à écrire la fonction permettant de parcourir les dossiers pour trouver le fichier.
Merci de me proposer des idées ou des bouts de code pour m'aider à m'avancer.
L'interface étant déjà faite, il ne me reste plus que ça à faire.
Je suis en train de développer un programme en C++ qui permet de saisir un nom ou une partie du nom d'un fichier pour ensuite le rechercher parmi des dossiers et des sous-dossiers.
Cependant je n'arrive pas à écrire la fonction permettant de parcourir les dossiers pour trouver le fichier.
Merci de me proposer des idées ou des bouts de code pour m'aider à m'avancer.
L'interface étant déjà faite, il ne me reste plus que ça à faire.
A voir également:
- Recherche de fichier en C++
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
10 réponses
Je code sur Code::Blocks et je compile avec Qt.
Je l'ai pas précisé mais j'ai commencé à apprendre le C que depuis 2 semaines c'est pour ça que j'ai des difficultés la ^^.
Et plus précisement j'aimerais savoir comment faire parcourir au programme tout les dossiers pour récuperer les fichiers pouvant correspondre à la recherche et ensuite pouvoir ouvrir celui que l'on veut.
Je l'ai pas précisé mais j'ai commencé à apprendre le C que depuis 2 semaines c'est pour ça que j'ai des difficultés la ^^.
Et plus précisement j'aimerais savoir comment faire parcourir au programme tout les dossiers pour récuperer les fichiers pouvant correspondre à la recherche et ensuite pouvoir ouvrir celui que l'on veut.
En C, il y a les fonctions: opendir(), readdir() et closedir(). Ceci donne accès au contenu des répertoires.
Avec Qt, donc en C++, il y a les classes 'QDir', 'QFile' & 'QFileInfo' qui permettent l'accès au contenu des répertoires et aux caractéristiques des fichiers (lire l'excellente documentation de Qt).
Bonne continuation.
Avec Qt, donc en C++, il y a les classes 'QDir', 'QFile' & 'QFileInfo' qui permettent l'accès au contenu des répertoires et aux caractéristiques des fichiers (lire l'excellente documentation de Qt).
Bonne continuation.
Merci pour les fonctions mais je suis un peu perdu, je n'arrive pas à les utiliser ^^.
J'ai trouvé quelques exemples sur internet mais même la ça me met des erreurs.
Quelqu'un pourrait me donner un exemple pour parcourir les dossiers puis en ouvrir un ?
Merci.
J'ai trouvé quelques exemples sur internet mais même la ça me met des erreurs.
Quelqu'un pourrait me donner un exemple pour parcourir les dossiers puis en ouvrir un ?
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut, commence par regarder du coté d'un algorithme de recherche par dichotomie, ce cours peut déjà t'aider... enfin je l'espère pour toi !
http://www.netprof.fr/Voir-le-cours-en-video-flash/Informatique/Programmation/Etude-d-un-algorithme-de-recherche,6,85,558,1.aspx
http://www.netprof.fr/Voir-le-cours-en-video-flash/Informatique/Programmation/Etude-d-un-algorithme-de-recherche,6,85,558,1.aspx
ça me sert a rien cette vidéo, je sais déjà comment faire des algorithme, le problème c'est que j'ai commencé le C++ il n'y a pas longtemps alors je sais pas trop m'en servir.
C'est pour ça que j'aimerais des exemples de code pour bien voir comment m'y prendre.
C'est pour ça que j'aimerais des exemples de code pour bien voir comment m'y prendre.
Non toujours pas désolé...
L'algorithme pour rechercher je le comprend mais là ou j'y arrive pas, c'est pour utiliser les fonctions nécessaires pour faire une recherche dans les dossiers puis les ouvrir.
Comme celle que loupious a cité un peux plus haut, je n'arrive pas à les intégrer à mon programme.
L'algorithme pour rechercher je le comprend mais là ou j'y arrive pas, c'est pour utiliser les fonctions nécessaires pour faire une recherche dans les dossiers puis les ouvrir.
Comme celle que loupious a cité un peux plus haut, je n'arrive pas à les intégrer à mon programme.
Pour les fonctions que tu ne connais pas, tu dois rechercher comment les utiliser. Faire un 'man' sur la toile n'est pas très compliqué.
Je te donne un exemple de parcours de répertoire et ce sera à toi de l'adapter à tes propres besoins.
Bonne réflexion.
Je te donne un exemple de parcours de répertoire et ce sera à toi de l'adapter à tes propres besoins.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <dirent.h> #include <sys/types.h> #include <sys/stat.h> void traitementRepertoire(const char* nomRepert) { DIR* dir; struct dirent* dirent; struct stat status; char name[NAME_MAX]; // Je suppose ne pas dépasser cette longueur if (!(dir = opendir(nomRepert))) return; while ((dirent = readdir(dir))) { if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) continue; strcpy(name, nomRepert); strcat(name, "/"); strcat(name, dirent->d_name); if (!stat(name, &status)) { if (S_ISDIR(status.st_mode)) traitementRepertoire(name); else if (S_ISREG(status.st_mode)) printf("%s\n", name); } } closedir(dir); } int main(int argc, char* argv[]) { if (argc > 1) traitementRepertoire(argv[1]); return(EXIT_SUCCESS); }Toutes les fonctions utilisées dans cet exemple sont définies Posix; avec Linux tu as quelques fonctions supplémentaires très puissantes qui sont définies dans Unix98 comme 'scandir' ou 'fnmatch' et qui simplifient énormément la recherche de fichiers.
Bonne réflexion.