Argumentos de la línea de comandos en C/C++

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:

  1. Se pasan a la función main().
  2. Son parámetros/argumentos proporcionados al programa cuando se invoca.
  3. Se utilizan para controlar el programa desde el exterior en lugar de codificar esos valores dentro del código.
  4. argv[argc] es un puntero NULL.
  5. argv[0] contiene el nombre del programa.
  6. argv[1] apunta al primer argumento de la línea de comando y argv[n] apunta al último argumento.

GeeksforGeeks-CPP-Foundation-Course

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:

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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

Este artículo es una contribución de Kartik Ahuja y Avadhut Patade . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *