Prendere parametri da riga di comando

Da Hacknowledge.

Talvolta è molto comodo passare alle nostre applicazioni dei parametri da riga da comando. L'esempio più classico è quello del comando ls su sistemi Unix (corrispettivo di dir su DOS), che può prendere come parametro la directory di cui si vuole visualizzare il contenuto:

ls /home
--- Qui viene stampato il contenuto di /home

Si può fare una cosa del genere anche nelle nostre applicazioni. Il metodo standard è quello di richiamare il main() del nostro programma con due parametri aggiuntivi:

  • argc - di tipo int
  • argv - un array di stringhe

Gli argomenti passati alla nostra applicazione verranno piazzati nell'array di stringhe argv, mentre invece il numero di argomenti passati sarà indicato dall'intero argc:

main (int argc, char **argv)

Il primo elemento del vettore di stringhe argv (argv[0]) conterrà sempre il nome dell'applicazione in esecuzione, e quindi argc sarà sempre almeno uguale a 1 (in quanto argv conterrà sempre almeno un valore). Da argv[1] in poi verranno indicati gli argomenti aggiuntivi passati alla nostra applicazione. Esempio pratico:

#include <stdio.h>
 
main (int argc, char **argv)  {
  int i;
 
  printf ("In esecuzione: %s\n",argv[0]);
 
  // Stampo tutti gli argomenti passati al programma
  for (i=1; i<argc; i++)
    printf ("Argomento n.%d: %s\n",i,argv[i]);
}
Strumenti personali