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 [2014/09/29 14:02]
gbdivers créée
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 ======
  
-Lorsqu'on lance une application, possibilité d'envoyer des informations :+Lorsque l'on lance une application il est possible de lui envoyer des informations :
  
 <code> <code>
Ligne 12: Ligne 14:
 Comment lire ces informations ? Comment lire ces informations ?
  
-===== Utilisation de argc et argv =====+===== Retour de la fonction main =====
  
-Comme déjà dit, 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 :
  
 <code cpp> <code cpp>
Ligne 21: Ligne 23:
 </code> </code>
  
-Correspond à une fonction qui ne reçoit aucun paramètres et retourne un entier. Souvent, on ne mets pas l'entier (0 par défaut) ou on retourne un code d'erreur :+Elle correspond à une fonction qui ne reçoit aucun paramètre et retourne un entier. Souvent, on ne mets pas l'entier (0 par défaut) ou on retourne un code d'erreur :
  
 <code cpp> <code cpp>
Ligne 29: Ligne 31:
 </code> </code>
  
-Il existe une autre signature, avec paramètres :+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 :
  
 <code cpp> <code cpp>
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 un 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 en fonction de la ligne de commande :+Selon la ligne de commande utilisée :
  
 <code> <code>
 ./a.out ./a.out
 +</code>
 +
 +affiche :
 +
 +<code>
 1 1
 +</code>
  
-./a.out int.txt +La ligne de commande suivante :
-2+
  
-./a.out int.txt out.txt+<code> 
 +./a.out hello world 
 +</code> 
 + 
 +affiche : 
 + 
 +<code>
 3 3
 </code> </code>
  
-__ pas encore vu les tableaux (mais vu les string et accès aux caractères ?) __+Il y a toujours au moins un argument, qui correspond au nom du programme. (Cela sera vu dans quelques instants). 
 + 
 + 
 +===== 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. 
  
-argv permet d'accéder aux châines de caractères correspondant à chaque paramètre. On reconnaît dans la déclaration le type char*, qui 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.+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 85: Ligne 112:
 </code> </code>
  
-Si on essaie d'afficher une valeur en dehors du tableau, comportement 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é 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.1411992170.txt.gz · Dernière modification: 2014/09/29 14:02 par gbdivers