Dans sa forme générale, main peut opérer sur la ligne de commande passée à l'interprète de commandes pour faire exécuter le programme. Cette ligne, qui est une chaîne de caractères, comprend toujours le nom de la commande et optionnellement des arguments, tous séparés par des espaces. La ligne de commande est donc représentée comme un tableau de chaînes de caractères, conventionnellement appelé argv, et le nombre d'éléments de ce tableau est argc :
int main(int argc, char *argv[]) { ... }
Le premier élément de ce tableau, argv[0] est toujours le nom du programme, de sorte que argc vaut toujours au moins 1. Les arguments du programme sont argv[1], ..., argv[argc-1]. En outre, argv[argc] est (le pointeur) nul.
Par exemple, le programme qui additionne des entiers peut s'écrire, de la façon suivante, en utilisant la fonction atoi. Cette fonction convertit une chaîne de caractères, qui est la notation d'un entier, en cet entier ; elle est déclarée dans stdlib.h (il y a aussi une fonction analogue atof qui retourne un double) :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int somme = 0;
int i;
for(i=1; i < argc ; i++) {
somme = somme + atoi(argv[i]);
}
printf("%d\n", somme);
return 0;
}
Si ce programme source est placé dans un fichier add.c et si on le compile par
unix% gcc -o add add.c
alors, on pourra exécuter
unix% add 12 23 34
et obtenir 69 comme réponse.