problème con : recupérer une variable passée en paramètre

problème con : recupérer une variable passée en paramètre - C - Programmation

Marsh Posté le 30-10-2003 à 12:39:14    

bon voila je sais bien que c un peu bête mais bon...
j'utilise argv[1] pour tenter de récupérer mon premier paramètre qui est un entier
donc quand je tape dans la ligne de commande :  
 
client 10 ENVOIE adbis
 
si je fais un printf("%d", *argv[1]); il me retourne 49
ce qui ne correspond pas trop à 10.
(pourtant argv[2] me retourne ENVOIE, et argv[3] me retourne adbis);
 
mon main :
 
int main (int argc, char *argv[])
 
si quelqu'un pouvait m'aider ça serait sympa. :)

Reply

Marsh Posté le 30-10-2003 à 12:39:14   

Reply

Marsh Posté le 30-10-2003 à 12:43:36    

C'est par que 10 n'est pas un Int mais un char*   [:spamafote]  
 
fais un

Code :
  1. printf("%s", *argv[1]);

 pour voir.
 
A+
 

Reply

Marsh Posté le 30-10-2003 à 12:45:08    

-keiji- a écrit :

C'est par que 10 n'est pas un Int mais un char*   [:spamafote]  
 
fais un

Code :
  1. printf("%s", *argv[1]);

 pour voir.
 
A+
 
 

:non:  

Code :
  1. printf("%s", argv[1]);

Reply

Marsh Posté le 30-10-2003 à 12:47:07    

*Syl* a écrit :

:non:  

Code :
  1. printf("%s", argv[1]);




 
 :jap:  autant pour moi, ca m'apprendra a faire des C-c C-v  :o  
 
A+

Reply

Marsh Posté le 30-10-2003 à 12:48:54    

ou puts(argv[1]) en plus court ;)
49 c'est le code ASCII du 1 je crois bien. Ca affiche bien le 1er caractère de la chaîne :p


---------------
Slack powa | http://www.racingpneu.com
Reply

Marsh Posté le 30-10-2003 à 12:49:28    

Bon alors on va essayer d'être clair:
 
argv est du type char**, ce qui signifie que c'est un tableau de pointeur vers des char.
 
Maintenent si tu veux afficher le premier, en partant de l'ypothése qu'il est défini, il faut faire:
 

Code :
  1. puts(argv[1]);


 
Et si jamais tu veux récupérer sa valeur dans un int:
 

Code :
  1. int i;
  2. sscanf(argv[1],"%d",&i);


---------------
Le Tyran
Reply

Marsh Posté le 30-10-2003 à 14:01:39    

merci bcp !  
c vrai que en y repensant j'aurai pu trouver lol mais par contre j'aurai pas forcément su comment le transformer en entier !
 
bon au moins mon client avance lol même si il marche pas lol

Reply

Marsh Posté le 31-10-2003 à 04:42:29    

Sinon lol y'a aussi strtoll() lol qui est plus simple que scanf() (et donc plus rapide lol)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed