6.4) Argumentos de main().
     
     

     Los argumentos pasados en la línea de órdenes del DOS a un programa son recibidos por la función main(). Existen dos variables predefinidas dentro del lenguaje que reciben los argumentos que se pasan al ejecutar un programa.
     
     
     
     

       
       
      Tipo
      Labor que realiza
      argc
      entero
      contiene el número de argumentos que se han introducido.
      argv
      array
      array de punteros a caracteres.

     
     

     El argv contiene los argumentos que se han pasado desde el sistema operativo al invocar el programa. La declaración de los argumentos es:
     
     
     


 
     
     
     

     La variable argc como mínimo valdrá 1, ya que el nombre del programa se toma como primer argumento, almacenado con argv[0], que es el primer elemento de la matriz. Cada elemento del array apunta a un argumento de la línea de ódenes. Todos los argumentos de la línea de ordenes son cadenas.
     
     
     



     
     
     

    Ejemplo:
     
     

    Estas dos formas son equivalentes:
     
     
     

     
    #include <stdio.h>

    main(argc, argv)
    int argc;
    char *argv[];
    {

      if(argc!=2) {
        printf("Ha olvidado su nombre.\n");
        exit(1);
      }
      printf("Hola %s", argv[1]);
    }
    #include <stdio.h>

    main(int argc, char *argv[])
    {

      if(argc!=2) {
        printf("Ha olvidado su nombre.\n");
        exit(1);
      }
      printf("Hola %s", argv[1]);
    }
     
     
     
       
     Este programa imprime Hola y su nombre en la pantalla si se escribe directamente tras el nombre del programa. Supongamos que hemos llamado al programa nombre.c, entonces, al compilarlo se creará un nombre.exe, al llamar al programa nombre con un nombre, por ejemplo: Juan, para ejecutar el programa tendrá que introducir nombre Juan. La salida del programa sería Hola Juan.
     
     

     En la mayoría de los entornos, cada argumento de la línea de órdenes debe estar separado por un espacio o una tabulación. Las comas, puntos y comas, y similares no se consideran separadores.
     
     

    Por ejemplo: Si hubiésemos introducido:
     

     
    nombre Pepe,  Antonio,  Miguel
     
       
    Serán consideradas como tres cadenas, y la salida sería:
     
     
    Ha olvidado su nombre.
       
    ya que entraríamos en el if por ser (argc!=2) cierto. Sin embargo:
     
     
    nombre Pepe,Antonio,Miguel
       
    es una sola cadena, ya que las comas no son separadores válidos. La salida sería:
     
     
    Hola Pepe,Antonio,Miguel