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
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
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; }
Partager