Convertirn char en int

matge Messages postés 25 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 20 novembre 2004 - 18 nov. 2004 à 16:41
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 - 19 nov. 2004 à 03:47
Bonjour!

Je dispose des variables suivante :

char Port[4];
int Port_Int;

Port="5000";

Je souhaite affecter la valeur numérique 5000 à la variable Port_Int(non pas la valeur ASCII).

En vous remerciant à l'avance, passez une bonne soirée

7 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 nov. 2004 à 16:51
dans le cas ou l'affectation n'est pas possible, utilises memcpy

memcpy( Port, &Port_Int, sizeof Port );

sous entendu sizeof Port == sizeof Port_Int
0
matge Messages postés 25 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 20 novembre 2004
18 nov. 2004 à 17:24
Salut!

Merci d'avoir répondu aussi rapidement, c'est cool!

Alors j'ai utilisé ceci:

#include <memory.h>

memcpy( &Port_Int, Port, sizeof Port );

Port_Int : dest (destination)
Port : src(source)

sur la variable Port est indiquée la valeur mémoire.
sur la variable Port_Int est indiqué le valeur numérique suivante : 842563254

ça ne joue pas!

Si je comprend bien, il faut avoir la même valeur d'adresse mémoire pour les deux variables?!
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
18 nov. 2004 à 18:25
Bonsoir,

La fonction 'atoi' ne te conviens pas ???

Matt...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 nov. 2004 à 18:34
matge > je pensais que tu voulais faire une copie memoire

utilises atoi comme Matt67 le suggere ou ssprintf

Port="5000";

il faudrais faire un strcpy (on peut pas affecter un tableau) et sizeof "5000" == 5 et non 4
0

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

Posez votre question
matge Messages postés 25 Date d'inscription vendredi 11 juin 2004 Statut Membre Dernière intervention 20 novembre 2004
18 nov. 2004 à 19:49
Salut!

Port_Int = atoi(Port); // Port_Int vaut 0 à l'execution!

strcpy( Port_Int, Port); // ne prend pas de paramètres en int!

Sinon, comme Port est un tableau, il faut le transformer en pointeur?! du style :

char* pPort;
strncpy(Port, pPort, 7);

Merci les gars...
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 nov. 2004 à 20:05
non la t'y est pas du tout (oubli tout ce que tu as ecris)

quand tu declare un tableau pour contenir une chaine, ne met pas une taille ridicule

char Port[200]; /* par exemple */

si Port contient la chaine "5000" et que tu veux mettre cette valeur numerique dans un entier

Port_Int = atoi(Port);

ou

sscanf( Port, "%d", &Port_Int ); /* te permet de controller si il y a eu une erreur */

mais tu as surtout besoin d'apprendre les bases parce que la tu nages
0
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
19 nov. 2004 à 03:47
voila la reponse à ta question :
#include <stdlib.h>
...
char Port[5]="5000";
int portint;
portint = strtol(Port,NULL,10);
---------------------
ca donne le bon resultat?
0
Rejoignez-nous