[C] argument de main()

Résolu/Fermé
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 - 2 nov. 2008 à 01:47
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 - 2 nov. 2008 à 16:07
Bonjour,

je code un programme qui déplace la souris à une position données, via deux paramère x, y

#include <windows.h>

int main(int argc, char *argv[])
{
     POINT pt;
     BOOL bContinue = TRUE;
     const SHORT Mask = 32768;
     SetCursorPos(argv[1], argv[2]);
     return 0;
}


mais ca ne marche pas, or en absolut, si je remplace les valeurs, ca marche bien.
je pense que c'est une érreur toutes bête car j'utilise rarement le c

merci

9 réponses

Main() Messages postés 113 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 27 avril 2009 18
2 nov. 2008 à 01:52
Bonsoir,
je vais certainement dire une bêtise mais le premier élément d'un tableau en c possède l'index 0 me semble-t'il

SetCursorPos(argv[0], argv[1]);
0
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 75
2 nov. 2008 à 01:57
oui c vrai mais le 0 c'est le chemin du programme !!
0
Main() Messages postés 113 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 27 avril 2009 18
2 nov. 2008 à 02:02
Bonsoir,
je tente encore ma chance : les typpes ne corresponde pas : argv -> char et SetCursorPos attend un int ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
2 nov. 2008 à 02:06
Salut
Le prototype de fonction est SetCursorPos(int,int), et toi tu mets en arguments des chaînes de caractères (argv[1] et argv[2]). Il faut les convertir en entier et donc utiliser la fonction atoi de stdlib.h.
Teste :
SetCursorPos(atoi(argv[1]),atoi(argv[2]);

N'oublie pas d'inclure stdlib.h ;)
Cdlt
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 75
2 nov. 2008 à 15:56
merci

j'avais oublier ! parce que argv est une chaine de caractère char
en réalité ça marchait mais ça allait toujours dans le coin à droite en bas (car le nombre devait être trop grand)


est c'est que je ne peux pas changer le char *argv dans la fonction main() en int* argv ???

merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
2 nov. 2008 à 16:01
Oui ça marchait, car tu te retrouvais avec l'adresse mémoire de l'emplacement qui est un grand nombre ^^.
Non tu ne peux pas faire ça car le compilateur ne sait pas ce que l'utilisateur va entrer en paramètre (nombre ou chaînes de caractères et heureusement pour la sécurité ^^). Donc du coup, c'est à toi de convertir en int.
0
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 75
2 nov. 2008 à 16:01
mon compilateur me renvoi une érreur :
in function 'main'
l8 : syntax error before ';' tokens

pourtant j'ai inclut le stdlib et j'ai éssayer en envoyant les 2 arguments
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
2 nov. 2008 à 16:04
T'as dû oublié une parenthèse ou bêtise du genre.
Poste ton code, sinon pour t'aider c'est dur ;)
0
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 75
2 nov. 2008 à 16:05
bizarement j'ai mis ca:
#include <windows.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
     const SHORT Mask = 32768;
     int x = atoi(argv[1]);
     int y = atoi(argv[2]);
     
     SetCursorPos(x, y);
//     mouse_event(MOUSEEVENTF_LEFTDOWN,800, 400,0,0);

     return 0;
}


et ca marche très bien
0
clintm Messages postés 689 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 10 juin 2015 75
2 nov. 2008 à 16:07
biensur

SetCursorPos(atoi(argv[1]),atoi(argv[2]);


la dernière paranthèse

merci à tous ca marche
0