Bonjour,
Est-ce que quelqu'un pourrait m'explique à quoi servent les deux variables int argc et char ** argv affichées en paramètres de la fonction main ? J'avoue que ça me déstabilise beaucoup.
Merci pour votre aide.
Bonjour,
Est-ce que quelqu'un pourrait m'explique à quoi servent les deux variables int argc et char ** argv affichées en paramètres de la fonction main ? J'avoue que ça me déstabilise beaucoup.
Merci pour votre aide.
Salut,
c'est pour récupérer des arguments utilisés pour lancer l'exécutable.
http://c.developpez.com/faq/?page=Co...e-de-commandes
J'ajoute à la réponse de Bousk un petit exemple :
Maintenant lance ce programme comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int main(int ac, char **av) { int i(0); while (av[i]) { std::cout << "-> " << av[i++] << std::endl; } return 0; }
Je pense que tu comprendras parfaitement comment cela fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ./le_programme argument1 "coucou !" "comment ca va ?"
la subtilité se cachant derrière ce code étant que le dernier élément est garanti d'être 0.
Supposons tu appelles argc et argv (pour "argument count" et "argument values") les arguments de main (int main(int argc, char** argv)).
Alors les trois propriétés suivantes sont vraies:
- argc > 0
- argv[0]!=0
- argv[argc]==0
Tout à fait, la condition "idéale" aurait d'ailleurs été :
Code : Sélectionner tout - Visualiser dans une fenêtre à part while (i < ac)
En C++, il peut être intéressant de construire un vecteur de strings à partir de ces arguments :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <string> #include <vector> #include <iostream> int main(int argc, char* argv[]) { std::vector<std::string> args(argv, argv + argc); // ligne intéressante for (const auto& arg : args) { std::cout << arg << std::endl; } return 0; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager