IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Explication pour ca SVP -> int main(int argc, char *argv[])


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Explication pour ca SVP -> int main(int argc, char *argv[])
    je suis débutant en c et je n'arrive pas à comprendre ce ligne de source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char *argv[])
    Ca sert a quoi les paramètres de la fonction main en c?
    SVP je veux une explication détaillée pour une débutant en c
    Merci d'avance les amis

  2. #2
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Ce prototype te permet de récupérer les arguments passés à ton programme comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include  <stdio.h>
    #include  <stdlib.h>
     
    int main(int argc, char *argv[] )
    {
    	unsigned i;
     
    	printf("argc    = %d\n",argc);
    	for( i=0 ; i<argc ; i++ ) {
    		printf("argv[%u] = %s\n",i,argv[i]);
    	}
     
    	return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    > ./a.out foo bar
     
    argc    = 3
    argv[0] = ./a.out
    argv[1] = foo
    argv[2] = bar
     
    Appuyez sur ENTRÉE ou tapez une commande pour continuer
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Pour ajouter à la réponse,
    argc est le nombre d'arguments passé au programme.
    argv est un tableau de chaines de caractères. Chaque élément du tableau est un argument passé.
    Sur bien des architectures, argc vaut au moins 1 et argv[0] contient le nom du programme lancé (plus un éventuel chemin).

  4. #4
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci j'ai bien compris mais ca sert a quoi exacte??
    Pouvez vous me donner deux ou trois exemples où en utilise la recupereration les arguments passes à un programme en C
    Merci d'avance les amis

  5. #5
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,
    Citation Envoyé par Hackaholic Voir le message
    Pouvez vous me donner deux ou trois exemples où en utilise la recupereration les arguments passes à un programme en C
    si tu écris un éditeur de textes que tu lancerais par la commande:
    edit.exe
    tu pourrais lui faire ouvrir directement les fichiers nommés file1.txt file2.txt par la commande:
    edit.exe file1.txt file2.txt
    Les deux noms de fichiers seraient transférés par le système dans les paramètres de ton main.

    A+

    Pfeuh

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Quand tu lances par exemple la commande "ls -alR /tmp" sur un système unix, le paramètre "-alR" modifie le comportement du programme "ls" et le paramètre "/tmp" indique à "ls" dans quel répertoire il doit travailler.

    Ces 2 arguments ("-alR" et "/tmp") sont récupérés par le programme "ls" en utilisant les paramètres de la fonction main() argc et argv.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Un exemple simple : un programme qui donne la taille du fichier donné en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        /* vérification du nombre d'arguments */
        if(2 != argc) {
            /* le nombre d'argument n'est pas celui attendu */
            printf("usage: %s fichier\n", argv[0]);
        } else {
            /* le nombre d'argument est celui attendu */
            /* ouverture du fichier donné en paramètre */
            FILE *f = fopen(argv[1], "r");
            if(f != NULL) {
                /* l'ouverture a réussi */
                fseek(f, 0, SEEK_END);
                printf("taille de %s: %do\n", argv[1],  ftell(f));
                fclose(f);
            } else {
                /* l'ouverture a échoué */
                printf("impossible d'ouvrir %s\n", argv[1]);
            }
        }
        return EXIT_SUCCESS;
    }

  8. #8
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Nice
    Merciii excellent explication les amis
    Je vous souhaite une excellente journée Merciiiiii

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. int main (int argc, char ** argv)
    Par wallace27 dans le forum C++
    Réponses: 5
    Dernier message: 26/06/2015, 14h33
  2. Transformer (int année, int mois, int jour) en millisecondes
    Par Logic_613 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 24/04/2012, 11h08
  3. Exécution main(int argc,char **argv)
    Par jadoud dans le forum Visual Studio
    Réponses: 1
    Dernier message: 28/01/2012, 14h34
  4. int main (int argc,char** argv)
    Par shadowless dans le forum Débuter
    Réponses: 5
    Dernier message: 31/05/2011, 16h45
  5. int main(int argc, char** argv)
    Par MABB dans le forum C++
    Réponses: 1
    Dernier message: 19/11/2007, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo