begin process at 2012 05 29 18:37:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pb de listage de fichiers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb de listage de fichiers

dimanche 18 avril 2004 à 20:34:46 | Pb de listage de fichiers

AlexMAN

Membre Club
Bonsoir all,

Voila, j'ai un ptit pb concernant une fonction ki liste les fichiers d'un repertoire precis, je sais kil ne me resterait ka prendre une fonction ki fonctionne (c le K de le dire !;) sur ce mm site, mais j'en vois pas l'interet !
Donc voila, je poste le code, et si kelkun pouvait me trouver le BUG ! je vous remercie d'avance !
#include <stdio.h>
#include <windows.h>

int iListFile(char *);

void iListFile(char *sPath)
{
HANDLE hList;
WIN32_FIND_DATA wFile;

hList = FindFirstFile(sPath, &wFile);

while ((FindNextFile(hList, &wFile))) {
if (wFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
printf("Repertoire : \t%s\n", wFile.cFileName);
}else {
printf("Fichier : \t%s\n", wFile.cFileName);
}
}

FindClose(hList);
}

void main (int argc, char *argv[])
{
//Pour sauter le premier argument (qui est simplement le nom de l'application);
argc--;
argv++;

iListFile(*argv);

getc(stdin);
}

En argument, je passe bien "f:\*.*" (f car mon hdd n'est pas c !)...

Voila, je vous remercie !

Bonne prog

Alhexman






dimanche 18 avril 2004 à 21:10:53 | Re : Pb de listage de fichiers

vecchio56

Administrateur CodeS-SourceS
première erreur flagrante: les types de retour de la fonction et du prototype sont différents, or on ne peut pas surcharger sur le type de retour.
Mais as-tu un problème de compilation ou un bug à l'éxécution?
dimanche 18 avril 2004 à 21:25:43 | Re : Pb de listage de fichiers

AlexMAN

Membre Club
uè dsl, le type de retour dans le prototype a été changé au dernier momen, mais c pas de la ke provient le pb, c au cours de l'execution du prog, j'ai l'impression kil saute la boucle (enfin, ke les conditions ne sont pas respecté) car il atta l'appui d'une touche mais je ne vois vraiment pas pkoi !
dimanche 18 avril 2004 à 21:55:51 | Re : Pb de listage de fichiers

vecchio56

Administrateur CodeS-SourceS
FindFirstFile attend une chaine du type F:\\*.* et non F:\\.
N'oublie pas dans ton programme d'afficher le fichier obtenu avec FindFirstFile (si différent de INVALID_HANDLE_VALUE)
dimanche 18 avril 2004 à 21:59:03 | Re : Pb de listage de fichiers

vecchio56

Administrateur CodeS-SourceS
je pense que ce sera mieux comme ca:


void iListFile(char *sPath)
{
HANDLE hList;
WIN32_FIND_DATA wFile;

hList = FindFirstFile(sPath, &wFile);
if(hList != INVALID_HANDLE_VALUE)
{
do
{
if (wFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf("Repertoire : \t%s\n", wFile.cFileName);
}
else
{
printf("Fichier : \t%s\n", wFile.cFileName);
}
}while ((FindNextFile(hList, &wFile)));
}
lundi 19 avril 2004 à 18:39:14 | Re : Pb de listage de fichiers

AlexMAN

Membre Club
Je te remercie vecchio, mais ca marche tjrs pas kan je passe le chemin d'acces en argumen, alors ke si je declare une chaine de caracteres contenant le chemin d'acces, ca fonctionn...

Merci kan mm

++

lundi 19 avril 2004 à 22:09:49 | Re : Pb de listage de fichiers

neohp

voila une solution qui marche :

void lister(char *path)
{
WIN32_FIND_DATA wData;
HANDLE listing;

if( !((listing = FindFirstFile(path, &wData)) == INVALID_HANDLE_VALUE ) )
{
do
{
if( wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
printf("Repertoire : \t%s\n", wData.cFileName);
else
printf("Fichier : \t%s\n", wData.cFileName);
}while(FindNextFile(listing, &wData)) ;
}
}

int main(int argc, char* argv[])
{
char rep[] = "c:\\*.*" ;

lister(rep) ;

return 0;
}

en fait, avoir ton source, je pense que le pb vient de ce bout de code :
argc--;
argv++;

iListFile(*argv);

sa me parait bizarre, j'vais essayer et je repost un com

A+
lundi 19 avril 2004 à 22:22:35 | Re : Pb de listage de fichiers

neohp

pour moi, le pb est resolu

le pb vient bien de la ou je pense :

dans mon source j'ai remplacé

argc--;
argv++;

iListFile(*argv);

par iListFile( argv[1] ) ; // le deuxieme argument sur la ligne

l'argument est de type c:\*.* et non pas de c:\\*.* :
en c, pour avoir la caractere '\', il faut le doubler dans un chaine, car '\' est un caractere d'echappement :

ex

char path[] = "c:\\*.*" ; // le chemin est c:\*.*

printf("le chemin est : %s\n", path) ;

te donnera a l'ecran

le chemin est : c:\*.*

bon apres la theorie je te met le source complet :

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

void lister(char *path)
{
WIN32_FIND_DATA wData;
HANDLE listing;

if( !((listing = FindFirstFile(path, &wData)) == INVALID_HANDLE_VALUE ) )
{
do
{
if( wData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
printf("Repertoire : \t%s\n", wData.cFileName);
else
printf("Fichier : \t%s\n", wData.cFileName);
}
while(FindNextFile(listing, &wData)) ;
}
}

int main(int argc, char* argv[])
{
lister(argv[1]) ;

return 0;
}



voila si tu mets dans une commande dos :
nom_programe f:\*.*
sa marchera

voila j'espere que sa resoud ton problème

++
mardi 20 avril 2004 à 18:10:11 | Re : Pb de listage de fichiers

AlexMAN

Membre Club
Je te remercie vraiment vecchio, de t'etre attardé sur mon cas, entre autre...Je vais essayer de déterminer la cause du pb : argc--; argv++;
J'ai déja utilisé, ca fonctionnait, enfin bref, je te remercie beaucoup...

++ vecchio

Alhexman
mercredi 21 avril 2004 à 01:11:36 | Re : Pb de listage de fichiers

neohp

hello...

non, ce n'etait pas vecchio, c'est moi hihi


argc--;
argv++;

iListFile(*argv);

en absolu, ce n'est pas faux ( quoique le argc-- sa sert a rien, ici) ..mais l'arithmétique de pointeur, c'est toujours delicat ...

c'est de tte facon , une solution pas très propre....

mais en effet j'ai tester dans mon source

lister(*(++argv)) ;

et sa marche parfaitement...

( s'a equivaut a
argv++ ;
lister(*argv) ;
)

voila j'espere que c'est ok maintenant

A+

neoh_p [=- coding spirit -=]
------- since 1999 ------

1 2

Cette discussion est classée dans : pb, fichiers, wfile, hlist, ilistfile


Répondre à ce message

Sujets en rapport avec ce message

pb visual c++ fichiers [ par pichu ] dans une fonction de visual j'ouvre un fichier fstream en lecture. Ce fichier contient des informations. Mais ca me renvoie true quand j'affiche le ré pb de config de VC++ 6 pour des fichiers unicodes [ par BionicSniper194 ] Salut a tous,un pot m'a recement passer un de ses code, et j'ai voulu l'utiliser mais au moment de la compilation j'ai un message du type :"XXXXXX.h   pb avec les fichiers cpp [ par Saros ] Bon là c'est la première fois que ça me le fait.Je bosse sous VC++6.J'ai un projet avec trois fichiers :estack.hetmain.cppRpn_Alg.cppJ'ai déclaré et d PB AVEC LES E/S FICHIERS [ par VBSephiroth ] Salut a ts !Je voudrais par exemple (en C, pas en CPP) le code qui lit un fichier a l'offset 15, puis qu'il lise a partir de l'offset 15 une chaine d pb de base de donnee en C [ par tequ13 ] j'aimerais savoir comment faire pour charger des fichiers (*.txt) a l'ouverture d'un programme pour ensuite les comparer et repérer les doublons pour c koi les fichiers h? [ par etmerde ] je suis débutant(mais alors là, plus nul que ça tu trouves pas), et j'ai vu dans les codes c++ des trucs du genre include (machinchose.h) ou un truc d pb avec procedure [ par bidules ] bonjour,voila mon code(simplifier) :void affiche(int numero){cout }void main(){affiche(10);}et un message d'erreur apparait lors de la compilation problèmes liens entre fichiers C et C++ dans un projet Visual C++ 6.0 [ par nico ] J'ai récupéré un projet contenant des fichiers écrits en C. Le fichier "principal" de ce projet également écrit en C fait appel à des fonctions se tro Pb code source CMphSock [ par xaviou ] Salut.J'ai téléchargé le projet "CMphSock" : Utilisation de Winsock sans MFC.Je l'ai compilé en mode Debug : tout est OKJ'ai essayé en mode Release : petit pb de type string [ par bidules ] D'apres ce que g pu apprendre lorsque l'on veut declarer une variable de type string il faut faire :#include string variable;c bien ca? car qd je fais


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,373 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales