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.
Version imprimable
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:
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:./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:while (i < ac)
En C++, il peut être intéressant de construire un vecteur de strings à partir de ces arguments :
Code:
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; }