Executer un progrmme avec en arguments des int ? [Résolu]

Signaler
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010
-
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010
-
Bonjour,
J'ai réalisé un programme qui trace des rectangles. Aucun problème les rectangles sont bien rectangles lorsqu'ils apparaissent. Au lancement, le programme demande d'entrer 4 entiers ( correspondant aux coordonnées de 2 points opposés du rectangle ). j'ai utilisé "scanf" pour la saisie des entiers.
J'ai ensuite projeté de reprendre le main() de mon programme afin de pouvoir m'éviter d'avoir à saisir une quelconque valeur durant l'execution du programme. Le but étant cette fois d'envoyer les "int" directement sous forme d'arguments lors de l'execution dans l'invite de commande(en tapant "rect.exe 1 2 20 30" ).

mon main ressemble à :

void main(int argc, char *argv[]) // joliment copié sur qulqu'un
{
printf(machin...
printf(chose...

rect(argv[1], argv[2], argv[3], argv[4]);
}

je ne parviens pas à récupérer de int.. j'ai pris argv[1] et argv[2] pour essayer de les faire parler dans des printf en les mettant à différents formats printf("%d ... "argv[1], *argv[1], &argv[], sizeof(argv[1])et plein d'autres petits test désespérés.
j'ai obtenu plein de résultats que je n'ai pas compris ( comme sizeof(argv[1]) = 2 (taille d'un int ?) ou bien &argv[1] = -50 (adresse négative, dois-je être surpris?)).
(sans ironie dans mes commentaires, ce sont de vraies interrogations.)

Bref avez-vous une idée de comment je pourrais convertir les valeurs du format %s reçues dans mon main() en entiers?

Merci ;)

3 réponses

Messages postés
1107
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
10 juillet 2018
4
Salut,

Mets-nous ta ligne de commande de test pour voir.

Sinon, essaie des atoi ou strtol (strtoul) sur tes arguments.

sizeof(argv[1]) = 2 : à mon avis ton 1er argument est une chaine de 2 caractères.
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010

la ligne de commande est la suivante :

rect.exe 10 10 30 30

void main(int argc, char *argv[])
{
if(argc > 1)
{
printf("Programme:\t%s\n",argv[0]);
rect(argv[1], argv[2], argv[3], argv[4]);
}
else erreur();

}

Je regarde ce soir pour le "atoi" et "strtol".

Merci ;)
Messages postés
15
Date d'inscription
jeudi 21 mai 2009
Statut
Membre
Dernière intervention
24 novembre 2010

atoi est ce qui me fallait ;)
merci