Analyse d'arguments de ligne de commande en C

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à analyser et à gérer les arguments de ligne de commande dans un programme C. C'est une compétence fondamentale en développement logiciel, car de nombreux programmes acceptent et traitent des arguments de ligne de commande pour personnaliser leur comportement.

👀 Aperçu

$ gcc cmd.c -o cmd
$./cmd --arg1 1 --arg2 demo --arg9 labex
arg1:1
arg2:demo
arg9:labex

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment créer un fichier C et écrire la structure de base d'un programme C
  • Comment analyser les arguments de ligne de commande et extraire les noms et les valeurs des paramètres
  • Comment imprimer les noms et les valeurs des paramètres dans le format requis

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre le concept d'arguments de ligne de commande et de savoir comment les utiliser dans un programme C
  • Implémenter un programme capable d'analyser et de gérer les arguments de ligne de commande
  • Appliquer vos connaissances en programmation C pour résoudre un problème pratique

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/ControlFlowGroup -.-> c/if_else("If...Else") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/CompoundTypesGroup -.-> c/strings("Strings") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/function_parameters("Function Parameters") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/if_else -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/for_loop -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/strings -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/function_declaration -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/function_parameters -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/create_files -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/user_input -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} c/output -.-> lab-301497{{"Analyse d'arguments de ligne de commande en C"}} end

Créer le fichier C

Dans cette étape, vous allez créer le fichier C pour le programme d'arguments de ligne de commande.

  1. Ouvrez un terminal et accédez au répertoire du projet :
cd ~/projet
  1. Créez un nouveau fichier C nommé cmd.c dans le répertoire du projet :
touch cmd.c
  1. Ouvrez le fichier cmd.c dans un éditeur de texte et ajoutez le code suivant :
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    // Votre code ira ici
    return 0;
}

Voici la structure de base du programme C qui gérera les arguments de ligne de commande.

Implémenter l'analyse des arguments de ligne de commande

Dans cette étape, vous allez implémenter la logique pour analyser les arguments de ligne de commande et imprimer les noms et les valeurs des paramètres.

  1. Dans la fonction main(), ajoutez une boucle pour parcourir les arguments de ligne de commande :
for (int i = 1; i < argc; i++) {
    // Votre code ira ici
}

La boucle commence à l'index 1 car argv[0] contient le nom du programme.

  1. À l'intérieur de la boucle, vérifiez si l'argument actuel commence par -- :
if (strncmp(argv[i], "--", 2) == 0) {
    // L'argument est un paramètre
    char *param = argv[i] + 2; // Supprime le préfixe "--"
    char *value = NULL;

    // Vérifiez s'il y a une valeur après le paramètre
    if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
        value = argv[i + 1];
        i++; // Passe l'argument de valeur
    }

    printf("%s:%s\n", param, value);
}

Ce code extrait le nom et la valeur du paramètre des arguments de ligne de commande et les imprime dans le format requis.

  1. Le code final est le suivant :
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    for (int i = 1; i < argc; i++) {
        if (strncmp(argv[i], "--", 2) == 0) {
            char *param = argv[i] + 2; // Supprime le préfixe "--"
            char *value = NULL;

            // Vérifiez s'il y a une valeur après le paramètre
            if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
                value = argv[i + 1];
                i++; // Passe l'argument de valeur
            }

            printf("%s:%s\n", param, value);
        }
    }

    return 0;
}
  1. Enregistrez le fichier cmd.c.

Compiler et exécuter le programme

Dans cette étape, vous allez compiler le programme C et l'exécuter avec quelques arguments de ligne de commande d'exemple.

  1. Compiler le fichier cmd.c :
gcc cmd.c -o cmd

Cela créera un fichier exécutable nommé cmd.

  1. Exécuter le programme avec quelques arguments de ligne de commande d'exemple :
./cmd --arg1 1 --arg2 demo --arg9 labex

Vous devriez voir la sortie suivante :

arg1:1
arg2:demo
arg9:labex
  1. Essayez d'exécuter le programme avec quelques paramètres dupliqués :
./cmd --testarg1 1 --testarg2 demo --testarg1 labex

Vous devriez voir la sortie suivante :

testarg1:1
testarg2:demo
testarg1:labex

Félicitations ! Vous avez réussi à implémenter le programme d'analyse d'arguments de ligne de commande.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.