Argomenti da riga di comando

Note

In C, la funzione main() può accettare due parametri opzionali:

int main(int argc, char *argv[])
  • argc (argument count) è un intero che indica il numero di argomenti passati al programma, incluso il nome dell'eseguibile.
  • argv (argument vector) è un array di stringhe (char*), in cui ogni elemento rappresenta un argomento passato da riga di comando.

Il primo elemento argv[0] è sempre il nome dell'eseguibile, mentre gli argomenti successivi sono quelli forniti dall'utente.

Example
#include <stdio.h>

int main(int argc, char *argv[]) {
   printf("Numero di argomenti: %d\n", argc);

   for (int i = 0; i < argc; i++) {
       printf("Argomento %d: %s\n", i, argv[i]);
   }

   return 0;
}

Esecuzione da terminale:

./programma arg1 arg2 arg3

Output:

Numero di argomenti: 4
Argomento 0: ./programma
Argomento 1: arg1
Argomento 2: arg2
Argomento 3: arg3

Conversione di Argomenti Numerici

Note

Poiché argv è un array di stringhe (char*), se gli argomenti devono essere usati come numeri, devono essere convertiti con funzioni come atoi() o strtol().

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

int main(int argc, char *argv[]) {
   if (argc < 3) {
       printf("Uso: %s numero1 numero2\n", argv[0]);
       return 1;
   }

   int num1 = atoi(argv[1]);  // Converte il primo argomento in intero
   int num2 = atoi(argv[2]);  // Converte il secondo argomento in intero

   printf("Somma: %d\n", num1 + num2);
   return 0;
}

Esecuzione:

./programma 5 10

Output:

Somma: 15