Est-il possible de rechercher un fichier sur le disque dur

Signaler
Messages postés
65
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
6 décembre 2012
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-

8 réponses

Messages postés
65
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
6 décembre 2012

Bon voila mon souci, Je doit imprimer des fichiers en fonction de leur nom que je conais lors de l'execution du programme.
Par exemple je demande une date a l'utilisateur et en fonction de la date plusieur nom de fichier sont recuperé.
<ol><li>4600218240017/21</li><li>4600218240027/21</li><li>G863211103</li><li>SE904073
</li></ol>Maintenant
avec ces noms il faudrait que le programme les recherche sur le disque
dur mais j'ai beau chercher je ne trouve pas de solution (Si il y en a
une ). Donc j'espere que vous pourez m'aider
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
FindFirstFile
FindNextFile
fais une recherche sur ces noms de fonctions, on a deja fait pas mal d'exemples.

ciao...
BruNews, MVP VC++
Messages postés
172
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
12 février 2009
2
Bonjour,
Si ca peu t'aider, j'ai un petit code qui permet de lister tous les fichiers se trouvant dans un dossier spécifié mais tu devrais pouvoir en fonction des fichier trouvé, pouvoir entrer dedans si ce sont des dossier et recommencer...


Liste tous les fichiers danss C:\:

char Adresse[] = "C:\\*.*"; /*Pour la 1ère *, tu met le nom du fichier et la deuxième éventuelement l'extention et tu pourras les faire changer durant l'éxécution du programme en la formatant( gets(Variable_Contenant_La_Nouvelle_Adresse); (sprintf(Adresse,"%s" , Variable_Contenant_La_Nouvelle_Adresse); )*/
HANDLE hFind;

WIN32_FIND_DATA wFindData;

hFind = FindFirstFile(Adresse, &wFindData);

if(hFind != INVALID_HANDLE_VALUE)
while(1)

{

if(!FindNextFile(hFind, &wFindData)) break;

printf("%s\n", wFindData.cFileName);

}

FindClose(hFind);

Je pense et j'espère que ce code te seras utile

//Cordialement,
Messages postés
123
Date d'inscription
samedi 14 juillet 2007
Statut
Membre
Dernière intervention
29 mars 2009
1
La récursivité s'apprend à BAC - 8.

Et pas la peine de refaire un code qui est au moins 35 fois dans MSDN.

Il y a même (évidemment) la fonction toute faite en récursif.dans la PSDK...
Messages postés
65
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
6 décembre 2012

Bon et bien merci de votre aide ! J'avance doucement mais surement et j'ai enfin compris comment rechercher :D.
Par contre j'ai un petit souci ... Je doit lire un fichier comme je vous est dit avec les références les une après les autre avec un saut de ligne pour les séparer. Le problème c'est que lorsque je veux faire une recherche avec la chaine de la 1ere ligne( j'utilise un fgets) il plante. J'en est déduit que c'ete a cause du saut de ligne puisque lorsque je met le nom du fichier il le trouve bien et ca marche parfaitement. Mais je me demande comment ne pas prendre en compte ce saut de ligne
Messages postés
65
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
6 décembre 2012

Ha oui une autre petite question.
peut on utiliser une variable pour définir un répertoire ?

Par exemple :

Je veux aller dans un répertoire qui ce trouve a cette adresse.
Dossier = "C:\\abcdef\\test\\SE\\x";
Avec le x une variable que je récupère pdt l'exécution de mon programme. Dans mon cas "SE901" ou "SE902" ect...
ce qui donnerais

Dossier = "C:\\abcdef\\test\\SE\\SE901";
Dossier = "C:\\abcdef\\test\\SE\\SE902";
...
Messages postés
65
Date d'inscription
vendredi 8 juin 2007
Statut
Membre
Dernière intervention
6 décembre 2012

Qqn a t il une idée ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
A ce point, tu stoppes ton prog et tu te plonges dans un bouquin de C, il est clair qu'il te manque toutes les bases.

si j'ai:
char dossier[264];
contenant deja: D:\truc\bidule\
donc 15 octets
je fais: ultoa(x, dossier + 15, 10);

ciao...
BruNews, MVP VC++