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
- Argumentos de Línea de Comandos: Parámetros que se pasan al programa cuando se ejecuta desde la línea de comandos.
argc
yargv
: Variables que se utilizan en la funciónmain
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:
argc
es un entero que representa el número de argumentos.argv
es un array de cadenas de caracteres (punteros achar
), 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
- Inclusión de la Biblioteca
stdio.h
: Necesaria para usar la funciónprintf
. - Definición de
main
conargc
yargv
: La funciónmain
recibe los argumentos de línea de comandos. - Impresión del Número de Argumentos:
printf("Número de argumentos: %d\n", argc);
imprime el número total de argumentos. - 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:
La salida será:
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
- Inclusión de Bibliotecas
stdio.h
ystdlib.h
:stdio.h
paraprintf
ystdlib.h
paraatoi
. - Verificación del Número de Argumentos:
if (argc != 3) { ... }
verifica que se hayan pasado exactamente dos argumentos (además del nombre del programa).
- 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.
- Cálculo de la Suma:
int suma = num1 + num2;
- 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:
La salida será:
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
- Introducción a la Programación
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
Módulo 2: Tipos de Datos y Variables
Módulo 3: Flujo de Control
Módulo 4: Funciones
- Introducción a las Funciones
- Argumentos de Función y Valores de Retorno
- Ámbito y Vida de las Variables
- Funciones Recursivas
Módulo 5: Arreglos y Cadenas
- Introducción a los Arreglos
- Arreglos Multidimensionales
- Manejo de Cadenas
- Funciones de 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
- Introducción al Manejo de Archivos
- Lectura y Escritura de Archivos
- Posicionamiento de Archivos
- Manejo de Errores en Operaciones de Archivos
Módulo 10: Temas Avanzados
- Directivas del Preprocesador
- Argumentos de Línea de Comandos
- Listas de Argumentos Variables
- Multihilo en C
Módulo 11: Mejores Prácticas y Optimización
- Legibilidad del Código y Documentación
- Técnicas de Depuración
- Optimización del Rendimiento
- Consideraciones de Seguridad