2013-04-16 3 views
0

J'ai un fichier nommé mama. Ce fichier contient 3 fichiers nommés child1 child2 et child3. child1 contient 5 txts, child2 contient 7 txts et child3 contient 4 txts. Le chemin de maman est C: \ Users \ John \ Desktop \ mama. Désolé pour ma façon d'écrire mais j'essaie d'expliquer exactement mon cas. Mon but est de trouver les chemins de tous ces txts (au nombre de 16) afin que je puisse faire des choses avec eux. Je pense donc une fonction qui trouve ces chemins et les mettre dans une liste,trouver des fichiers spécifiques dans un fichier en C++

struct paths 
{ 
    string pathName; 
    paths *next; 
}; 

serait exactement ce que je dois les utiliser un par un. J'ai trouvé quelques exemples sur FindFirstFile() et FindNextFile(), j'ai aussi essayé d'exécuter du code afin que je puisse comprendre avec quelques tests comment ça marche mais les erreurs continuent d'apparaître interdisant l'opportunité de tester et de comprendre. D'ailleurs j'utilise Visual Studio 2008 (c'est celui qu'ils ont dit que nous devrions utiliser donc je suppose que je ne peux pas le changer). Si quelqu'un peut m'aider à comprendre ou avoir un lien qui aurait de bons exemples et en quelque sorte facile à comprendre, je serais vraiment reconnaissant.

Edit:

Par exemple, avec ce code

#include <windows.h> 
#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 

    int main() 
    { 
     WIN32_FIND_DATA fData; 
     void * handle = FindFirstFile("C:/Users/John/Desktop/*", &fData);//<~~~error 
     cout << fData.cFileName; 
     system("pause"); 
    } 

Il y a 1 erreur: erreur Erreur 1 C2664: 'FindFirstFileW': ne peut pas convertir le paramètre 1 de 'const char [24]' à ' LPCWSTR »

+0

Voulez-vous dire que vous avez un _directory_ nommé "mama"? –

+0

Huh? Est-ce que "mama" est un fichier qui répertorie d'autres fichiers/chemins ou un dossier qui contient d'autres fichiers? – John3136

+0

c'est un fichier qui contient d'autres fichiers. –

Répondre

2

d'abord, vous devez déclarer une structure WIN32_FIND_DATA

trouver alors le premier fichier dans un répertoire (par exemple C:/Users/John/Desktop/*)

paths * head; 
WIN32_FIND_DATA fData; 
void * handle = FindFirstFile("C:/Users/John/Desktop/*", &fData); 

vérifier pour voir si elle est le fichier que vous voulez en utilisant:

fData.cFileName // the file name is stored here (ie C:/Users/John/Desktop/child2.txt) 

vous pouvez le faire dans une boucle:

while(!CheckFileNameHere(fData.cFileName, head->pathname)) FindNextFile(handle, &fData); 

incrément la liste:

head = head->next; 

ou terminer:

CloseHandle(handle); 

La façon d'obtenir les chemins dépend de vous. Si vous les avez stockés dans un fichier, utilisez et des fonctions de stdio.h, iostream ou windows.h. Si vous écrivez ceci en tant que fonction, vous pouvez le réutiliser pour n'importe quel nom de fichier.

Si vous obtenez des erreurs d'exécution en utilisant ces méthodes, vous devez publier les erreurs exactes afin que nous puissions comprendre pourquoi elles ne fonctionnent pas. Idem pour les erreurs de compilation.

+0

Merci je vais le tester maintenant, mais il sera être à coup sûr le bon fichier. et comme je l'ai dit je veux trouver les chemins de tous les txts qu'il y a dans les fichiers dont les fichiers sont dans le fichier nommé mama (par exemple). –

+0

Une erreur apparaît: /. J'ai édité ma question –

Questions connexes