Enrere Mòdul 7
Fonaments de programació. Llenguatge C/C++---
Pràctica    Resum teòric Exercicis
Pràctica d'ampliació

 

Arguments de la funció main()

En aquesta pràctica veurem dos exemples d'aplicació dels arguments de la funció main().

 

Desenvolupament de la pràctica

Quan es vol especificar opcions o valors en el moment d'executar un programa des de l'indicador d'ordres del sistema operatiu, aquests es passen  a través dels arguments de la funció main(). La funció main() pot tenir dos arguments: 

  • El primer, de tipus int, contindrà el nombre total de paràmetres passats (el nom del fitxer executable es compta com el primer paràmetre) 

  • El segon és un vector de cadenes de caràcters.

En aquest primer exemple es pot veure fàcilment la forma d'extraure aquests paràmetres:

Definiu un projecte nou anomenat m7p091 i afegiu-li un arxiu de font C/C++ anomenat m7p091.cpp. Escriviu el següent codi:

//m7p091.cpp: Arguments de la funció main() (I)

#include <stdio.h>


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


    printf("El nombre total d'arguments és %d\n",argc);

    for(ct=0;ct<argc;ct++) 
        printf("L'argument %d és %s\n",ct,argv[ct]);


}

Explicació del programa

En aquest programa es considerarà els paràmetres passats des de la línia d'ordres, per aquest motiu la funció main() comença:

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

La variable argc contindrà el nombre total de paràmetres, incloent el nombre de l'arxiu executable, cada paràmetre es passa com a cadena de caràcters i es pot recuperar amb argv[].

A continuació es pot comprovar un exemple d'execució del programa anterior:

c:\>m7p091 Francisco Javier Ruiz Vegas
El nombre total d'arguments és 5
L'argument 0 és c:\>m70091.exe
L'argument 1 és Francisco
L'argument 2 és Javier
L'argument 3 és Ruiz
L'argument 4 és Vegas

 

En el cas que es necessiti passar paràmetres numèrics, s'ha de fer una conversió. En el següent exemple es pot veure amb nombres del tipus double:

Definiu un projecte nou anomenat m7p092 i afegiu-li un arxiu de font C/C++ anomenat m7p092.cpp. Escriviu el següent codi:

//m7p092.cpp: Arguments de la funció main() (II)

#include <stdio.h>
#include <stdlib.h>

void main (int argc, char *argv[]){
    int ct;
    double mitjana=0;

    if (argc==1) return;

    for(ct=0;ct<argc;ct++) 
        mitjana=mitjana+atof(argv[ct]);

    printf("mitjana de les %d dades :%lf",  
            argc-1,mitjana/(argc-1));


}

Explicació del programa

Aquest programa calcularà la mitjana dels nombres introduïts darrere del nom de l'arxiu executable.

La conversió de la cadena de caràcters a variables del tipus double es fa amb la funció atof() el protocol de la qual es troba definit a l'arxiu stdlib.h Aquesta funció intenta convertir la cadena a double i, si no pot, torna 0. Per exemple:

atof("1.2")=1.2
atof("1.2hola)=1.2
atof("hola1.2")=0

Com que el nombre de paràmetres numèrics és igual a argc-1, per a calcular la mitjana s'ha de dividir per aquest nombre. En el cas que argc-1 sigui 0, el programa sortirà immediatament gràcies a la línia de comprovació:

 if (argc==1) return;