En este tema, aprenderemos cómo manejar argumentos de línea de comandos en C. Los argumentos de línea de comandos permiten que un programa reciba información adicional cuando se ejecuta desde la línea de comandos. Esto es útil para personalizar el comportamiento del programa sin necesidad de modificar el código fuente.

Conceptos Clave

  1. Argumentos de Línea de Comandos: Parámetros que se pasan al programa cuando se ejecuta desde la línea de comandos.
  2. argc y argv: Variables que se utilizan en la función main para recibir los argumentos de línea de comandos.
    • argc (argument count): Número de argumentos pasados al programa.
    • argv (argument vector): Array de cadenas de caracteres que contiene los argumentos.

Sintaxis

La función main se define de la siguiente manera para manejar argumentos de línea de comandos:

int main(int argc, char *argv[]) {
    // Código del programa
}
  • argc es un entero que representa el número de argumentos.
  • argv es un array de cadenas de caracteres (punteros a char), donde cada elemento es un argumento.

Ejemplo Práctico

Vamos a crear un programa simple que imprima los argumentos de línea de comandos que recibe.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Número de argumentos: %d\n", argc);
    for (int i = 0; i < argc; i++) {
        printf("Argumento %d: %s\n", i, argv[i]);
    }
    return 0;
}

Explicación del Código

  1. Inclusión de la Biblioteca stdio.h: Necesaria para usar la función printf.
  2. Definición de main con argc y argv: La función main recibe los argumentos de línea de comandos.
  3. Impresión del Número de Argumentos: printf("Número de argumentos: %d\n", argc); imprime el número total de argumentos.
  4. Bucle for para Imprimir los Argumentos:
    • for (int i = 0; i < argc; i++) { ... } recorre todos los argumentos.
    • printf("Argumento %d: %s\n", i, argv[i]); imprime cada argumento.

Ejecución del Programa

Supongamos que guardamos el programa en un archivo llamado args.c. Compilamos y ejecutamos el programa de la siguiente manera:

gcc args.c -o args
./args Hello World 123

La salida será:

Número de argumentos: 4
Argumento 0: ./args
Argumento 1: Hello
Argumento 2: World
Argumento 3: 123

Ejercicio Práctico

Ejercicio 1

Escribe un programa en C que reciba dos números como argumentos de línea de comandos y calcule su suma.

Solución

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc != 3) {
        printf("Uso: %s <num1> <num2>\n", argv[0]);
        return 1;
    }

    int num1 = atoi(argv[1]);
    int num2 = atoi(argv[2]);
    int suma = num1 + num2;

    printf("La suma de %d y %d es %d\n", num1, num2, suma);
    return 0;
}

Explicación del Código

  1. Inclusión de Bibliotecas stdio.h y stdlib.h: stdio.h para printf y stdlib.h para atoi.
  2. Verificación del Número de Argumentos:
    • if (argc != 3) { ... } verifica que se hayan pasado exactamente dos argumentos (además del nombre del programa).
  3. Conversión de Cadenas a Enteros:
    • int num1 = atoi(argv[1]); convierte el primer argumento a un entero.
    • int num2 = atoi(argv[2]); convierte el segundo argumento a un entero.
  4. Cálculo de la Suma: int suma = num1 + num2;
  5. Impresión del Resultado: printf("La suma de %d y %d es %d\n", num1, num2, suma);

Ejecución del Programa

Compila y ejecuta el programa de la siguiente manera:

gcc sum.c -o sum
./sum 10 20

La salida será:

La suma de 10 y 20 es 30

Resumen

En esta sección, hemos aprendido cómo manejar argumentos de línea de comandos en C utilizando argc y argv. Hemos visto un ejemplo práctico y hemos realizado un ejercicio para reforzar los conceptos. En el siguiente tema, exploraremos las listas de argumentos variables, que permiten a las funciones aceptar un número variable de argumentos.

Curso de Programación en C

Módulo 1: Introducción a C

Módulo 2: Tipos de Datos y Variables

Módulo 3: Flujo de Control

Módulo 4: Funciones

Módulo 5: Arreglos y Cadenas

Módulo 6: Punteros

Módulo 7: Estructuras y Uniones

Módulo 8: Asignación Dinámica de Memoria

Módulo 9: Manejo de Archivos

Módulo 10: Temas Avanzados

Módulo 11: Mejores Prácticas y Optimización

Módulo 12: Proyecto y Evaluación Final

© Copyright 2024. Todos los derechos reservados