La función más importante de C/C++ es la función main(). Se define principalmente con un tipo de retorno de int y sin parámetros:
int main() { /* ... */ }
También podemos dar argumentos de línea de comandos en C y C++. Los argumentos de la línea de comandos se dan después del nombre del programa en el shell de línea de comandos de los sistemas operativos.
Para pasar argumentos de la línea de comandos, normalmente definimos main() con dos argumentos: el primer argumento es el número de argumentos de la línea de comandos y el segundo es la lista de argumentos de la línea de comandos.
int main(int argc, char *argv[]) { /* ... */ }
o
int main(int argc, char **argv) { /* ... */ }
- argc (ARGument Count) es de tipo int y almacena el número de argumentos de la línea de comandos pasados por el usuario, incluido el nombre del programa. Entonces, si le pasamos un valor a un programa, el valor de argc sería 2 (uno para el argumento y otro para el nombre del programa)
- El valor de argc no debe ser negativo.
- argv(ARGument Vector) es una array de punteros de caracteres que enumeran todos los argumentos.
- Si argc es mayor que cero, los elementos de la array desde argv[0] hasta argv[argc-1] contendrán punteros a strings.
- Argv[0] es el nombre del programa, después de eso hasta argv[argc-1] cada elemento son argumentos de línea de comando.
Para una mejor comprensión, ejecute este código en su máquina Linux.
// Name of program mainreturn.cpp #include <iostream> using namespace std; int main(int argc, char** argv) { cout << "You have entered " << argc << " arguments:" << "\n"; for (int i = 0; i < argc; ++i) cout << argv[i] << "\n"; return 0; }
Aporte:
$ g++ mainreturn.cpp -o main $ ./main geeks for geeks
Producción:
You have entered 4 arguments: ./main geeks for geeks
Nota: Los estándares C y C++ también permiten otros formatos dependientes de la plataforma; por ejemplo, Unix (aunque no POSIX.1) y Microsoft Visual C++ tienen un tercer argumento que proporciona el entorno del programa, accesible de otro modo a través de getenv en stdlib.h: consulte el programa C para imprimir las variables de entorno para obtener detalles.
Propiedades de los argumentos de la línea de comandos:
- Se pasan a la función main().
- Son parámetros/argumentos proporcionados al programa cuando se invoca.
- Se utilizan para controlar el programa desde el exterior en lugar de codificar esos valores dentro del código.
- argv[argc] es un puntero NULL.
- argv[0] contiene el nombre del programa.
- argv[1] apunta al primer argumento de la línea de comando y argv[n] apunta al último argumento.
Nota: pasa todos los argumentos de la línea de comando separados por un espacio, pero si el argumento en sí tiene un espacio, puede pasar dichos argumentos colocándolos entre comillas dobles «» o comillas simples».
// C program to illustrate // command line arguments #include<stdio.h> int main(int argc,char* argv[]) { int counter; printf("Program Name Is: %s",argv[0]); if(argc==1) printf("\nNo Extra Command Line Argument Passed Other Than Program Name"); if(argc>=2) { printf("\nNumber Of Arguments Passed: %d",argc); printf("\n----Following Are The Command Line Arguments Passed----"); for(counter=0;counter<argc;counter++) printf("\nargv[%d]: %s",counter,argv[counter]); } return 0; }
Salida en diferentes escenarios:
- Sin argumento: cuando el código anterior se compila y ejecuta sin pasar ningún argumento, produce el siguiente resultado.
$./a.out Program Name Is: ./a.out No Extra Command Line Argument Passed Other Than Program Name
- Tres argumentos: cuando el código anterior se compila y ejecuta con tres argumentos, produce el siguiente resultado.
$./a.out First Second Third Program Name Is: ./a.out Number Of Arguments Passed: 4 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First argv[2]: Second argv[3]: Third
- Argumento único: cuando el código anterior se compila y ejecuta con un solo argumento separado por un espacio pero entre comillas dobles, produce el siguiente resultado.
$./a.out "First Second Third" Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third
- Argumento único entre comillas separadas por espacios: cuando el código anterior se compila y ejecuta con un solo argumento separado por espacios pero dentro de comillas simples, produce el siguiente resultado.
$./a.out 'First Second Third' Program Name Is: ./a.out Number Of Arguments Passed: 2 ----Following Are The Command Line Arguments Passed---- argv[0]: ./a.out argv[1]: First Second Third
Referencias:
http://www.cprogramming.com/tutorial/lesson14.html
http://c0x.coding-guidelines.com/5.1.2.2.1.html
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA