Auteur : SD
Créé le : 03-12-2022
Langage C - Projet "Ping Them All" - Partie 3
Retour vers la partie 2
La suite (partie 4)
Version 4 – Utilisation des paramètres argc et argv de la fonction main
Jusqu’à maintenant l’en-tête de notre fonction main était :
int main (void)
Ceci indique que notre programme renvoie un entier (int) au système d’exploitation. 0 si l’exécution s’est déroulée normalement ou un code d’erreur.
Nous souhaitons pouvoir passer des paramètres à notre programme :
- L’option "/f" suivie par le nom du fichier .txt qui contient la liste des machines
- L’option "/?" qui affichera l’aide de notre programme.
- L’option "/v" qui affichera le numéro de version de notre programme.
Utilisé sans paramètre, notre programme lira par défaut le fichier "hosts-list.txt".
Comment utiliser les paramètres argc et argv ?
L’en-tête de notre fonction main va devenir :
int main (int argc, char* argv[])
Avec :
- argc : nombre de paramètres qui ont été fournis au programme
- argv : un tableau de chaines de caractères (tableau à 2 dimensions) qui contient les paramètres passés au programme (à noter que la première chaine de ce tableau (argv[0]) contient le nom du programme. Le premier paramètre éventuel est donc dans argv[1].
Exemple de code qui affiche le nom du programme, le nombre de paramètres ainsi que tous les paramètres reçus :
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[])
{
// Affiche le nom du programme
printf("\nNom du programme : %s", argv[0]);
// Affiche le nombre de paramètres reçus
printf("\n\nLe programme a recu %d parametre(s).", argc);
printf("\nLes parametres recus sont : ");
// Affiche tous les paramètres reçus
for(int i = 0 ; i < argc ; i++)
printf("\n\t- %s", argv[i]);
printf("\n\n");
return 0;
}
Résultats obtenus :
Modifications à apporter à votre programme
- Afficher l’aide si le programme reçoit l’option "/?" en paramètre. Vous vous inspirerez de l’affichage de l’aide des commandes Windows existantes. Par exemple en observant l’affichage produit par "del /?".
- Si aucun paramètre n’est passé en dehors du nom du programme le fonctionnement précédent sera conservé (lecture du fichier "hosts-list.txt"). Vous contrôlerez que ce fichier existe et qu’il n’est pas vide avant de l’utiliser. S’il n’existe pas un message d’erreur informera l’utilisateur et le programme renverra le code d’erreur 1. S’il est vide un message d’erreur informera l’utilisateur et le programme renverra le code d’erreur 2
- Si le programme reçoit les paramètres "/f" suivie par le nom du fichier texte (.txt) qui contient la liste des machines. Il utilisera le fichier reçu en paramètre à la place de "hosts-list.txt". Il faudra contrôler que le fichier reçu en paramètre existe et qu’il n’est pas vide avant de l’utiliser. S’il n’existe pas un message d’erreur informera l’utilisateur et le programme renverra le code d’erreur 1. S’il est vide un message d’erreur informera l’utilisateur et le programme renverra le code d’erreur 2
- L’option "/v" qui affichera le numéro de version de notre programme.
- Si le(s) paramètres reçu(s) ne correspond(ent) pas à ceux mentionnés ci-dessous le programme affichera un message d’erreur suivi de l’aide affiché normalement avec le paramètre "/?". Le programme renverra alors le code d’erreur 3
Aide
Vous devez créer un fichier ".bat" de test qui permettra de tester votre programme dans tous les cas d’utilisations possibles.
Faire constater au professeur
Retour vers la partie 2
La suite (partie 4)
Vous avez apprécié cet article ? Partagez le !