Dominando los Argumentos de Línea de Comandos en C: Guía Práctica
Es posible pasar valores desde la línea de comandos a sus programas en C cuando se ejecutan. Estos valores se llaman argumentos de línea de comandos y a menudo son importantes para su programa, especialmente cuando desea controlarlo desde fuera en lugar de codificar esos valores dentro del código.
Los argumentos de línea de comandos se manejan usando los argumentos de la función main(), donde argc se refiere al número de argumentos pasados, y argv[] es un array de punteros que apunta a cada argumento pasado al programa. A continuación se muestra un ejemplo simple que comprueba si se ha suministrado algún argumento desde la línea de comandos y actúa en consecuencia:
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc == 2) {
printf("The argument supplied is %s\n", argv[1]);
} else if (argc > 2) {
printf("Too many arguments supplied.\n");
} else {
printf("One argument expected.\n");
}
}
Al compilar y ejecutar con un solo argumento, produce:
$./a.out testing
The argument supplied is testing
Al compilar y ejecutar con dos argumentos, produce:
$./a.out testing1 testing2
Too many arguments supplied.
Al compilar y ejecutar sin pasar ningún argumento, produce:
$./a.out
One argument expected
Debe observarse que argv[0] contiene el nombre del propio programa y argv[1] es un puntero al primer argumento de línea de comandos suministrado, y *argv[n] es el último argumento. Si no se suministran argumentos, argc será 1, y si pasa un argumento, argc se establece en 2.
Se pasan todos los argumentos de línea de comandos separados por un espacio, pero si el argumento en sí tiene un espacio, puede pasarlo poniéndolo entre comillas dobles "" o comillas simples ''. Reescribamos el ejemplo anterior donde imprimiremos el nombre del programa y también pasaremos un argumento de línea de comandos entre comillas dobles:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Program name %s\n", argv[0]);
if (argc == 2) {
printf("The argument supplied is %s\n", argv[1]);
} else if (argc > 2) {
printf("Too many arguments supplied.\n");
} else {
printf("One argument expected.\n");
}
}
Al compilar y ejecutar con un solo argumento separado por espacio pero entre comillas dobles, produce:
$./a.out "testing1 testing2"
Program name ./a.out
The argument supplied is testing1 testing2
Lenguaje C
- Líneas de Corte de Precisión: Corte Automatizado Avanzado de Bobinas para Anchos Exactos
- Optimización de Líneas de Envasado Químico: Mejoras para Tiempo de Actividad y Seguimiento OEE
- Entendiendo Decodificadores: Tipos, Tablas de Verdad y Aplicaciones Prácticas
- Entendiendo la Eficiencia de Línea: Métricas Clave para Producción de PCB
- GD&T explicado: Perfil de una línea vs. Perfil de una superficie
- Líneas de producción (production lines): cómo las líneas de montaje impulsan la eficiencia
- Líneas de edificación (building lines / setbacks): límites legales en parcela urbana
- Derivaciones en par (bridge taps): interferencias en línea telefónica y ADSL/VDSL
- Línea de montaje (assembly line): piezas intercambiables y producción en serie
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando los argumentos de línea de comandos en Java: cómo pasar y analizar parámetros