C - Argumentos de la línea de comandos
Es posible pasar algunos valores desde la línea de comando a sus programas en C cuando se ejecutan. Estos valores se llamancommand line arguments y muchas veces son importantes para su programa, especialmente cuando desea controlar su programa desde fuera en lugar de codificar esos valores dentro del código.
Los argumentos de la línea de comando se manejan usando argumentos de la función main () donde argc se refiere al número de argumentos pasados, y argv[]es una matriz de punteros que apunta a cada argumento que se pasa al programa. A continuación se muestra un ejemplo simple que verifica si hay algún argumento proporcionado desde la línea de comando y toma las medidas correspondientes:
#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");
}
}
Cuando el código anterior se compila y ejecuta con un solo argumento, produce el siguiente resultado.
$./a.out testing
The argument supplied is testing
Cuando el código anterior se compila y ejecuta con dos argumentos, produce el siguiente resultado.
$./a.out testing1 testing2
Too many arguments supplied.
Cuando el código anterior se compila y ejecuta sin pasar ningún argumento, produce el siguiente resultado.
$./a.out
One argument expected
se debe notar que argv[0] contiene el nombre del programa y argv[1]es un puntero al primer argumento de línea de comando proporcionado, y * argv [n] es el último argumento. Si no se proporcionan argumentos, argc será uno, y si pasa un argumento, entoncesargc se fija en 2.
Pasas todos los argumentos de la línea de comandos separados por un espacio, pero si el argumento en sí tiene un espacio, entonces puedes pasar dichos argumentos poniéndolos entre comillas dobles "" o comillas simples ". Reescribamos el ejemplo anterior una vez más, donde imprimiremos el nombre del programa y también pasamos un argumento de línea de comando poniendo 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");
}
}
Cuando el código anterior se compila y ejecuta con un solo argumento separado por espacio pero entre comillas dobles, produce el siguiente resultado.
$./a.out "testing1 testing2"
Progranm name ./a.out
The argument supplied is testing1 testing2