Análisis de argumentos de línea de comandos en C

CBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderás a analizar y manejar los argumentos de línea de comandos en un programa C. Esta es una habilidad fundamental en el desarrollo de software, ya que muchos programas aceptan y procesan argumentos de línea de comandos para personalizar su comportamiento.

👀 Vista previa

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

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear un archivo C y escribir la estructura básica de un programa C
  • Cómo analizar los argumentos de línea de comandos y extraer los nombres y valores de los parámetros
  • Cómo imprimir los nombres y valores de los parámetros en el formato requerido

🏆 Logros

Después de completar este proyecto, serás capaz de:

  • Comprender el concepto de argumentos de línea de comandos y cómo utilizarlos en un programa C
  • Implementar un programa que pueda analizar y manejar los argumentos de línea de comandos
  • Aplicar tus conocimientos de programación en C para resolver un problema práctico

Crea el archivo C

En este paso, crearás el archivo C para el programa de argumentos de línea de comandos.

  1. Abre una terminal y navega hasta el directorio del proyecto:
cd ~/proyecto
  1. Crea un nuevo archivo C llamado cmd.c en el directorio del proyecto:
touch cmd.c
  1. Abre el archivo cmd.c en un editor de texto y agrega el siguiente código:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
    // Tu código irá aquí
    return 0;
}

Esta es la estructura básica del programa C que manejará los argumentos de línea de comandos.

Implementa el análisis de argumentos de línea de comandos

En este paso, implementarás la lógica para analizar los argumentos de línea de comandos e imprimir los nombres y valores de los parámetros.

  1. En la función main(), agrega un bucle para iterar a través de los argumentos de línea de comandos:
for (int i = 1; i < argc; i++) {
    // Tu código irá aquí
}

El bucle comienza desde el índice 1 porque argv[0] contiene el nombre del programa.

  1. Dentro del bucle, comprueba si el argumento actual comienza con --:
if (strncmp(argv[i], "--", 2) == 0) {
    // El argumento es un parámetro
    char *param = argv[i] + 2; // Elimina el prefijo "--"
    char *value = NULL;

    // Comprueba si hay un valor después del parámetro
    if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
        value = argv[i + 1];
        i++; // Omite el argumento de valor
    }

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

Este código extrae el nombre y el valor del parámetro de los argumentos de línea de comandos e los imprime en el formato requerido.

  1. El código final es el siguiente:
#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; // Elimina el prefijo "--"
            char *value = NULL;

            // Comprueba si hay un valor después del parámetro
            if (i + 1 < argc && strncmp(argv[i + 1], "--", 2)!= 0) {
                value = argv[i + 1];
                i++; // Omite el argumento de valor
            }

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

    return 0;
}
  1. Guarda el archivo cmd.c.

Compila y ejecuta el programa

En este paso, compilarás el programa C y lo ejecutarás con algunos argumentos de línea de comandos de ejemplo.

  1. Compila el archivo cmd.c:
gcc cmd.c -o cmd

Esto creará un archivo ejecutable llamado cmd.

  1. Ejecuta el programa con algunos argumentos de línea de comandos de ejemplo:
./cmd --arg1 1 --arg2 demo --arg9 labex

Deberías ver la siguiente salida:

arg1:1
arg2:demo
arg9:labex
  1. Intenta ejecutar el programa con algunos parámetros duplicados:
./cmd --testarg1 1 --testarg2 demo --testarg1 labex

Deberías ver la siguiente salida:

testarg1:1
testarg2:demo
testarg1:labex

¡Felicidades! Has implementado con éxito el programa de análisis de argumentos de línea de comandos.

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar