Liste de fichiers d'un rep

kharbout Messages postés 5 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 mai 2005 - 11 mai 2005 à 12:33
kharbout Messages postés 5 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 mai 2005 - 13 mai 2005 à 09:33
Bonjour,
Je m'excuse si ma question vous parait bête, je suis débutant on va dire.
Je voudrais une aide pour lister la liste des fichiers d'un rep dont le nom est donné dans un fichier .txt en option.

pour lister les fichiers j'ai trouvé un truc du genre :

#define _WIN32_WINNT 0x0501

#include <windows.h>
#include <string.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
char DirSpec[MAX_PATH]; // directory specification
DWORD dwError;

printf ("Target directory is %s.\n", argv[1]);
strncpy (DirSpec, argv[1], strlen(argv[1])+1);

hFind = FindFirstFile(DirSpec, &FindFileData);

if (hFind == INVALID_HANDLE_VALUE)
{
printf ("Invalid file handle. Error is %u\n", GetLastError());
return (-1);
}
else
{
printf ("First file name is %s\n", FindFileData.cFileName);
while (FindNextFile(hFind, &FindFileData) != 0)
{
printf ("Next file name is %s\n", FindFileData.cFileName);
}

dwError = GetLastError();
FindClose(hFind);
if (dwError != ERROR_NO_MORE_FILES)
{
printf ("FindNextFile error. Error is %u\n", dwError);
return (-1);
}
}
return (0);
}

Je n'ai pâs réussi à le faire marcher.

Que dois ajouter ou faire?
Merci

7 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
11 mai 2005 à 13:04
Salut,
Le premier param de FindFirstFile(...) est la chaine a rechercher.
Par exemple, si tu veux trouver tout les fichiers dans la racine de C, il faut passer "C:\\*.*".
Je pense qu'il faudrait rajouter un strcat(DirSpec, "*.*"); apres le strncpy.
0
kharbout Messages postés 5 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 mai 2005
11 mai 2005 à 14:08
pour mettre le path en dur, je dois faire quels changements?
Je n'arrive pas à décrocher le bon enchainement.

En tout cas, si je change l'appel du main en int main() , il me sort une erreur de char*[] et const char *[].
0
kharbout Messages postés 5 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 mai 2005
11 mai 2005 à 14:20
j'ai aussi une autre question au passage, Dirent.h existe-t-il dans .net2003 c++?
Parceque j'ai une autre solution beaucoup plus facile à adapter, mais qui utilise DIR, closedir...
Merci pour l'aide que vous me donnerez
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
11 mai 2005 à 15:56
Salut,
Tu n'a pas essayés ce que j'ai proposé plus haut ?
...
strncpy (DirSpec, argv[1], strlen(argv[1])+1);

strcat(DirSpec, "*.*"); // rajoute cette ligne
...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kharbout Messages postés 5 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 mai 2005
12 mai 2005 à 10:05
Salut,
Merci pour ton aide. Maintenant, ça devrait marcher si je l'appelle correctement. Mais là, je n'y arrive tjs pas.

Il faut que je change ce main en ListFiles par exemple, et après que je fasse un main ou j'appelle ListFiles avec comme argument (1, "C:\") par exemple. Là, il me sort l'erreur "impossible de convertir le param 2 de 'char*' en 'char*[]. Que dois faire ici? pourrais tu m'aider aussi sur ce point?

Merci
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 mai 2005 à 17:54
Salut,
Sans le code qui va avec l'erreur je pense pas pouvoir t'aider..
0
kharbout Messages postés 5 Date d'inscription mardi 10 mai 2005 Statut Membre Dernière intervention 13 mai 2005
13 mai 2005 à 09:33
Salut,


Je n'ai rien ajouté. C'est un seul fichier, je viens de commencer.


Je dois faire une fonction list file c'est tout. Et quand je la lance dans le main, je veux que ça fasse la liste de fichiers de ce rep.


Donc ici, au début je mets int listfiles.... avec tout ce qui a été dit, et dans le main, je veux appeler justement listfiles avec comme argument le répertoire. Voilà, est ce que tu peux m'aider à l'appeler correctement?


Merci encore une fois.
0
Rejoignez-nous