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.

✨ Revisar Solución y Practicar

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.
✨ Revisar Solución y Practicar

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.

✨ Revisar Solución y Practicar

Resumen

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