Comment analyser les arguments de la ligne de commande entière en C?

Je voudrais un utilisateur à passer deux paramètres ou la laisser vide. Par exemple:

./program 50 50

ou

./program

Quand j'ai essayé d'utiliser int main(int argc, char *argv[])la première chose que j'ai faite a été de changer char *argv[] à int *argv[] mais cela n'a pas fonctionné. Ce que je veux, c'est de l'utilisateur est juste de saisir deux entiers compris entre 0 et 100. Donc, si c'est pas deux entiers, alors il devrait donner une erreur.

J'étais en quelque sorte de penser à donner une erreur avec les types (comme je l'ai utilisé pour programmer en C#) mais ce que j'entre, argv[1] serait 'char' type de tous les temps.

Donc ce que j'ai fait est

for (int i = 0; i <= 100; i++) {
    //printf("%d", i);
    if (argv[1] == i) {
        argcheck++;
        printf("1st one %d\n", i);
    }
    else if (argv[2] == i) {
        argcheck++;
        printf("2nd one %d\n", i);
    }

Cela ne fonctionne pas aussi bien. Aussi, il donne l'avertissement lors de la compilation, mais si je change argv avec atoi(argv[1]) par exemple, cela donne un Segmentation fault (core dumped) erreur.

J'ai besoin d'un moyen simple de résoudre ce problème.

EDIT:

Donc, je fixe avec atoi()la raison pour laquelle il était en train de donner la faute de segmentation est parce que j'ai essayer avec la valeur null lorsque je n'ai pas de paramètre. J'ai donc corrigé par l'ajout d'un supplément cond. Mais maintenant le problème est que si la valeur est disons

./program asd asd

Alors la sortie de atoi(argv[1]) serait de 0. Est-il un moyen de modifier cette valeur?

source d'informationauteur Sarp Kaya