Outils d'utilisateurs

Outils du Site


ligne_de_commande

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

ligne_de_commande [2015/08/01 14:00]
37.163.102.2 [Utilisation de argc et argv]
ligne_de_commande [2016/04/25 00:21] (Version actuelle)
gbdivers
Ligne 1: Ligne 1:
  
 ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^
 +
 +<note warning>Ce chapitre est encore en cours de rédaction, voire à l'état d'ébauche. N’hésitez pas a faire des remarques ou poser des questions sur le forum de [[http://zestedesavoir.com/forums/|Zeste de Savoir]] ou de [[http://openclassrooms.com/forum/sujet/nouveau-cours-c-moderne|OpenClassroom]].</note>
  
 ====== La ligne de commande ====== ====== La ligne de commande ======
Ligne 12: Ligne 14:
 Comment lire ces informations ? Comment lire ces informations ?
  
-===== Utilisation de argc et argv =====+===== Retour de la fonction main =====
  
 La fonction ''main'' est obligatoire et doit respecter une signature imposée par la norme C++. Pour le moment, on utilise : La fonction ''main'' est obligatoire et doit respecter une signature imposée par la norme C++. Pour le moment, on utilise :
Ligne 28: Ligne 30:
 } }
 </code> </code>
 +
 +Retourner 0 ou EXIT_SUCCESS si pas d'erreur, EXIT_FAILURE ou un code d'erreur.
 +
 +===== argc =====
  
 Il existe une autre signature, avec des paramètres : Il existe une autre signature, avec des paramètres :
Ligne 36: Ligne 42:
 </code> </code>
  
-''argc'' contient le nombre de paramètres passé lors de l'appel de la fonction. Chaque paramètre est séparé par une espace et le premier paramètre est le nom du programme. Par exemple :+''argc'' contient le nombre de paramètres passé lors de l'appel de la fonction. Chaque paramètre est séparé par une espace et le premier paramètre est le nom du programme. Le code suivant permet par exemple d'afficher le nombre de paramètres lors de l'appel du programme.
  
 <code cpp main.cpp> <code cpp main.cpp>
Ligne 46: Ligne 52:
 </code> </code>
  
-affiche, selon la ligne de commande :+Selon la ligne de commande utilisée : 
 + 
 +<code> 
 +./a.out 
 +</code> 
 + 
 +affiche :
  
 <code> <code>
Ligne 52: Ligne 64:
 </code> </code>
  
-pour ''./a.out'',+La ligne de commande suivante :
  
 <code> <code>
-2+./a.out hello world
 </code> </code>
  
-pour ''./a.out int.txt'',+affiche :
  
 <code> <code>
Ligne 64: Ligne 76:
 </code> </code>
  
-pour ''./a.out int.txt out.txt''.+Il y toujours au moins un argument, qui correspond au nom du programme(Cela sera vu dans quelques instants).
  
-__ pas encore vu les tableaux (mais vu les string et accès aux caractères ?) __ 
  
-''argv'' permet d'accéder aux chaînes de caractères correspondant à chaque paramètre. On reconnaît dans la déclaration le type ''char*'' correspondant aux littérales chaînes de caractères. Les crochets droits ''[]'' permettent de déclarer un tableau. Le type de ''argv'' peut donc se lire comme étant un tableau de chaînes de caractères.+===== argv ===== 
 + 
 +''argv'' permet d'accéder aux chaînes de caractères correspondant à chaque paramètre. On reconnaît dans la déclaration le type ''char*'' correspondant aux littérales chaînes de caractères. Les crochets droits ''[]'' permettent de déclarer un tableau de type C. Le type de ''argv'' peut donc se lire comme étant un tableau de chaînes de caractères. 
 + 
 +<note>Les tableaux du style C 
 + 
 +Moins safe que les collections du C++, besoin de conserver la taille dans une variable séparée.  
 + 
 +Toujours vérifier les accès et préférer les tableaux du C++ 
 +</note>
  
 Pour accéder aux éléments d'un tableau, on utilise également les crochets droits, en indiquant la position dans le tableau (en commençant à 0). Pour accéder aux éléments d'un tableau, on utilise également les crochets droits, en indiquant la position dans le tableau (en commençant à 0).
Ligne 92: Ligne 112:
 </code> </code>
  
-Si on essaie d'afficher une valeur en dehors du tableau, le comportement est indéterminé.+Si on essaie d'afficher une valeur en dehors du tableau, le comportement est indéterminé. Pensez à toujours vérifier les accès aux tableaux. 
 + 
 +Comme vous le voyez, le premier argument ''argv[0]'', correspond au nom du programme. 
 + 
 +Notez que même si ''argv'' n'est pas ''const'', ce tableau ne doit pas être modifié. 
 + 
 +===== convertir en vector ===== 
 + 
 +Possible de copier dans un ''std::vector<std::string>'' pour utiliser avec les algos standard. 
 + 
 +<code cpp> 
 +#include <iostream> 
 +#include <vector> 
 +#include <string> 
 +#include <algorithm> 
 + 
 +int main(int argc, char* argv[]) { 
 +    std::vector<std::string> args (argv, argv+argc);    
 +    for (auto s: args) { 
 +        std::cout << s << std::endl; 
 +    } 
 +
 +</code> 
 + 
 +affiche : 
 + 
 +<code> 
 +./a.out 
 +hello 
 +world 
 +</code> 
 + 
 +<note>En pratique, il n'est pas nécessaire de copier dans un tableau ''vector'', surtout que cela a un cout. Il est possible d'utiliser la paire ''argv'' et 'argv+argc'' avec les algos standard directement. 
 + 
 +<code cpp> 
 +std::find(argv, argv+argc, "hello"); 
 +</code> 
 + 
 +Mais, pour débuter, préférer les fonctionnalités du C++ plutôt que les anciennes syntaxes héritées du C. 
 +</note>
  
-L'utilisation des tableaux sera détaillée par la suite, en particulier comment les parcourir automatiquement avec une boucle. 
  
 ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^
  
-{{tag> Cours C++}} 
ligne_de_commande.1438430442.txt.gz · Dernière modification: 2015/08/01 14:00 par 37.163.102.2