PASSARE PARAMETRI /ARGOMENTI AL MAIN
sulla linea di comando
Al main si possono passare sulla linea di comando dei parametri (o
argomenti) costituiti da stringhe di caratteri. I parametri vanno specificati
dopo il nome dell' eseguibile, come ad esempio:
%
a.out
par1
par2
par3
Due esempi (in grassetto quanto scritto dall'utente):
1)Questo programma saluta gli argomenti scritti sulla linea
di comando:
%
a.out
anna maria
giovanna
ciao anna, ciao maria, ciao giovanna.
2)Questo programma fa invece l'eco delle righe lette da
tastiera, se contengono la stringa passata come parametro:
% a.out
oggi
che giorno e' oggi?
che giorno e' oggi?
domani sara' lunedi'
oggigiorno e' di moda andare al mare
oggigiorno e' di moda andare al mare
e' di moda uscire di sera nell'week end
^D
Un main che usa parametri passati sulla linea di comando va definito così:
int main(int argc, char *argv[])
E' il sistema operativo che passa in argc (argument count) il numero dei
parametri +1, in argv (argument vector) l'indirizzo di una array di puntatori
a stringhe; in argv[0] c'è il puntatore al nome dell’eseguibile, in
argv[i] il puntatore allo i-esimo parametro.
argc = 4
argv[0]
argv[1]
‘a’ ’.’ ‘o’ ‘u’ ‘t’ ‘\0’
‘\0’
‘p’ ’a’ ‘r’ ‘1’ ‘\0’
argv[2]
‘p’ ’a’ ‘r’ ‘2’ ‘\0’
argv[3]
‘p’ ’a’ ‘r’ ‘3’ ‘\0’
1
Es 1.
/* saluta gli argomenti scritti sulla linea di comando */
int main (int argc,char *argv[])
{
int i;
for (i=1; i< argc;i++)
printf(" ciao %s%c", argv[i],(i<argc-1) ? ',': '.');
printf("\n");
return 0;
}
Es 2.
/* fa l'eco delle righe che legge da tastiera,
contengono la stringa passata come parametro */
int main(int argc, char *argv[]){
se
char linea[100];
while(gets(linea) != NULL)
if (strstr(linea,argv[1])!= NULL)
puts(linea);
}
Es 3.
Modificare il secondo esempio in modo che usi il primo parametro come
flag opzionale:
a.out
-x
parola
stampa le righe che non contengono parola
a.out
–n
parola
stampa le righe che contengono parola precedute dal numero di linea
a.out -nx
parola
stampa le righe che non contengono parola, precedute dal numero di linea
Oss. In ambiente DevC++ per passare al main i parametri si esegue il
comando run sul file eseguibile seguito dal parametro. Nell’esempio 2,
sulla mia macchina, io dovrei eseguire il comando run aprendo il file:
D:\giulia_uff_30\Didattica\Programmi_C\prog1 oggi
2
Puntatori a puntatori
I puntatori a puntatori sono costrutti usati in programmi sofisticati:
per dichiarare un puntatore a puntatore occorre far precedere il nome
della variabile da due asterischi consecutivi
int **p;
// dichiara p come puntatore ad un puntatore ad int
Per accedere al valore dell’int, è necessario utilizzare i doppi
asterischi:
j = **p;
assegna un intero a j
3
Scarica

PASSARE PARAMETRI /ARGOMENTI AL MAIN sulla linea di