begin process at 2012 02 11 14:11:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Shell

 > 

int main(int argc, char ** argv)


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

int main(int argc, char ** argv)

mercredi 18 juin 2008 à 06:07:34 | int main(int argc, char ** argv)

agent 047

Bonjour,
mon probleme se porte sur le paramètre "char **argv" de la fonction principale utile pour connaître les adresses de chaque argument.

Par exemple dans le dossier TOTO il y a 5 fichiers: main.c audio.c hdd.c scsi.c cdrom.c
Mon programme consiste à afficher les arguments émit par l'utilisateur mais quand j'écris
c:\TOTO>prog *.c
Le programme m'affiche  l'argument telle que je l'ai ecris
*.c au lieu de main.c audio.c hdd.c scsi.c cdrom.c comme sous linux pourquoi???

mon compilateur est le toolkit visual studio 2003
merci d'avance
mercredi 18 juin 2008 à 07:18:29 | Re : int main(int argc, char ** argv)

coucou747

Administrateur CodeS-SourceS
salut

ca ne vient pas du compilateur mais du shell que tu utilises :

sous linux, en bash, *... est remplace automatiquement par la liste des fichiers qui correspondent au masque.

sous windows, non.
mercredi 18 juin 2008 à 11:43:43 | Re : int main(int argc, char ** argv)

jfrancois

Réponse acceptée !

Bonjour,

Il faut utiliser le filtre passé en argv[1] ("*.c" dans l'exemple) avec FindFirstFile() puis boucler avec FindNextFile().

Voici un exemple de petit programme console qui liste des fichiers suivant un filtre passé en paramètre :

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

int main(int argc,char** argv)
{
   // --- Filtre des fichiers
   char szFiltre[MAX_PATH];
   if (argc == 1)
      strcpy(szFiltre,"*.*");
   else
      strcpy(szFiltre,argv[1]);
   printf("\nLister les fichiers \"%s\" :\n",szFiltre);


   // --- Positionner sur le premier fichier
   WIN32_FIND_DATA Find;
   HANDLE hFichier = FindFirstFile(szFiltre,&Find);
   if (hFichier == INVALID_HANDLE_VALUE)
   {
      printf("*** Aucun fichier correspondant au filtre ***\n");
      return 0;
   }


   // --- Parcourir les fichiers
   int iCompteur = 0;
   do
   {
      // --- Ne pas traiter les répertoires
      if (Find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) continue;

      // --- Ne pas traiter les fichiers système
      if (Find.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) continue;

      // --- Fichier à traiter
      ++iCompteur;
      printf("%d : %s\n",iCompteur,Find.cFileName);
   } while (FindNextFile(hFichier,&Find));
   printf("%d fichier(s)\n",iCompteur);


   // --- Fermer la recherche
   FindClose(hFichier);
   return 0;
}


Ce qui donne (le programme se nomme test) :

test

Lister les fichiers "*.*" :
1 : Test.exe
2 : Test.obj
3 : Test.pch
4 : vc60.idb
4 fichier(s)

test *.exe

Lister les fichiers "*.exe" :
1 : Test.exe
1 fichier(s)

test *.cpp

Lister les fichiers "*.cpp" :
*** Aucun fichier correspondant au filtre ***

Jean-François

mercredi 18 juin 2008 à 15:28:23 | Re : int main(int argc, char ** argv)

agent 047

merci infiniment jfrançois


Cette discussion est classée dans : int, char, argv, main, argc


Répondre à ce message

Sujets en rapport avec ce message

Petite interrogation sur le main [ par jeromedu94 ] Bonjour,Lorsque je crée un projet, dans le fichier C j'ai ça :        int main(int argc, char *argv[])Et je voudrais savoir à quoi corresponde argc et char**, pointeur et fonction [ par psykocrash ] Salut,Je bosse sur un petit programme et je butte sur un problème de pointeurs. Voici le code source qui pose problème :--------------------#include # parametre de la fonction main() [ par infodaoudi ] bonjour,dans le programme qui suit : comment executer la fonction main() sachant que j'utilise le vc++ 6.0 (console). autrement dit, comment faire pou char **argv [ par iam_myst ] bonjour je pense que c'est vraiment un problème de débutant mais la je suis perplexe :( si on a un programme pricipal de ce type :     int main(int a Utilisation des arguments int argc et char *argv[] [ par christophedlr ] Bonjour à tous,Je voudrais savoir comment faire pour tester si un argument de la ligne de commande est par exemple --help pour afficher l'aide par exe Conversion de char en int ? [ par jnbrunet ] Salut,Je débute en c++... dans mon programme j'aimerai additionner les valeurs entrées en argument dans le main (argv). Le problème est que la variabl Void , char* , long probleme [ par kiki67100 ] Bonjour jai un probleme voici le code#include // pour les 2 apis utilisés FindFirstFile() FindNextFile()#include #include &lt Conversion de types [ par Berenger ] En C, la fonction main se présente comme ca :int main(int argc, char *argv[]){}Moi, je veux récupérer la valeur de argv[3] pour la stocker et l'utilis les Argument Du main() !!! [ par WaFFel ] bha expliquon mon problem !int main(int nArg,char* cArgs[]){ // ..... plein de ligne de code ...... }bha vous voyer ses une declaration d'un main d Argument argv[] en (int) [ par thebigbang ] Bonjour,Je cherche comment récupérer une variable entière à partir de la cette fonction main() :int main(int argc, char * argv[] ){...return 0;}Je vou


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 5,990 sec (3)

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