fflush(stdin) ne marche pas

fflush(stdin) ne marche pas - C++ - Programmation

Marsh Posté le 01-04-2003 à 14:25:06    

et oui je l'ai fait.
 
 :whistle:  
 
c'est le 1er avril aussi....
 
En fait je ne sais plus exactement comment on fait pour passer d'un char[] vers un entier

Code :
  1. int j=0;
  2. int tcp_port = 0;
  3. port [5] = "12345";
  4. while (port[j]!='\0')
  5. {
  6. tcp_port = (tcp_port * 10) + (port[j]-48);
  7. j++;
  8. }


 
y a une erreur quelque part mais je ne vois plus ou.

Reply

Marsh Posté le 01-04-2003 à 14:25:06   

Reply

Marsh Posté le 01-04-2003 à 14:26:08    

polo021 a écrit :


port [5] = "12345";


 
Et ton \0 final, tu le stocke ou ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 01-04-2003 à 14:27:55    

ben disons port[6] = "12345\0" alors mais ca c'est juste pour vous montrer mon char mais en il y est le '\0'. Spasalproblaim

Reply

Marsh Posté le 01-04-2003 à 14:58:24    

ou port[]
 
plus généralement, ton compilateur devrait t'avertir de ce genre de problème

Reply

Marsh Posté le 01-04-2003 à 14:59:49    

++Taz a écrit :

ou port[]
 
plus généralement, ton compilateur devrait t'avertir de ce genre de problème


 
mais est ce que tu peux m'aider a resoudre ce probleme de conversion? toi qui conseille de ne pas utiliser itoa et atoi.  :??:

Code :
  1. int j=0;
  2.   int tcp_port = 0;
  3.   port [] = "12345\0";
  4.   while (port[j]!='\0')
  5.   {
  6.      tcp_port = (tcp_port * 10) + (port[j]-48);
  7.      j++;
  8.   }


Message édité par polo021 le 01-04-2003 à 15:01:09
Reply

Marsh Posté le 01-04-2003 à 15:07:49    

vite fait (sans tester) :

Code :
  1. char str[] = "12344";
  2. int res = 0;
  3. for (int i = 0; i < strlen(str); i++)
  4. res = 10 * res + str[i] - '0';

Reply

Marsh Posté le 01-04-2003 à 15:33:49    

hum...ben...heu...
en fait apres quelques tests je viens de voir que c'est l'affichage de mon resultat qui n'allait pas mais la conversion etait parfaitement bien faite.
 
Enfin ces deux solutions  

Code :
  1. int j=0;
  2. int tcp_port = 0;
  3. port [] = "12345\0";
  4. while (port[j]!='\0')
  5. {
  6.     tcp_port = (tcp_port * 10) + (port[j]-48); // ou (port[j]-'0')  
  7.     j++;
  8. }


 
pourront certainement servir a des gens.
 
Merci quand meme pour votre aide.

Reply

Marsh Posté le 01-04-2003 à 17:09:12    

sscanf

Reply

Marsh Posté le 01-04-2003 à 17:33:56    

polo021 a écrit :


En fait je ne sais plus exactement comment on fait pour passer d'un char[] vers un entier


 

ATOI(3)                   Manuel du programmeur Linux                  ATOI(3)
 
NOM
       atoi - Conversion d'une chaîne en entier (int).
 
SYNOPSIS
       #include <stdlib.h>
 
       int atoi (const char *nptr);
 
DESCRIPTION
       La  fonction atoi() convertit le début de la chaîne pointée par nptr en
       entier de type int.  Le résultat est identique à un appel
 
              strtol(nptr, (char **)NULL, 10);
 
       à la différence que atoi() ne détecte pas d'erreur.
 
VALEUR RENVOYÉE
       Le résultat de la conversion.
 
CONFORMITÉ
       SVID 3, POSIX, BSD 4.3, ISO 9899
 
VOIR AUSSI
       atof(3), atol(3), strtod(3), strtol(3), strtoul(3)
 
TRADUCTION
       Christophe Blaess, 1997.
 
GNU                             22 Octobre 1996                        ATOI(3)

Reply

Marsh Posté le 01-04-2003 à 17:36:03    


 

polo021 avait écrit :


 
mais est ce que tu peux m'aider a resoudre ce probleme de conversion? toi qui conseille de ne pas utiliser itoa et atoi.  
[/cpp]


 
[:grilled]


Message édité par bobuse le 01-04-2003 à 17:36:26
Reply

Marsh Posté le 01-04-2003 à 17:36:03   

Reply

Marsh Posté le 01-04-2003 à 17:36:24    

ou sscanf qui est un généraliste (histoire de pas avoir la questions ur les float dans 2 jours) :bounce:

Reply

Marsh Posté le 01-04-2003 à 17:42:56    

bobuse a écrit :


mais est ce que tu peux m'aider a resoudre ce probleme de conversion? toi qui conseille de ne pas utiliser itoa et atoi.  


Ecoute alors ++Taz: sscanf est infinement plus efficace que de parcourir le tableau ...

Reply

Marsh Posté le 02-04-2003 à 10:08:05    

ok, je vais essayer
 
merci

Reply

Sujets relatifs:

Leave a Replay

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