Concaténé numérique + "." pour reconstruire un ip

Résolu
KC62 Messages postés 229 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 juin 2007 - 17 janv. 2005 à 18:10
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 18 janv. 2005 à 19:33
Bonjour a tous ,



J'ai un petit souci qui devient de plus en plus gros chaque jour.

Je récupére une ip sous forme de 4 variable numérique mais je dois reconstruire l'ip avec les "."

exemple je reçois : var1 var2 var3 var4

et je dois placer dans la variable ip : var1.var2.var3.var4 soit : 192.168.0.1



En gros l'idée c'est de concaténé du numérique avec du texte. Je suis ouvert a toutes idée pouvant me dépanné.



Merci d'avance a ceux qui prendront la peine de m'éclaircir même un peu.



KC62


On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...

11 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
17 janv. 2005 à 18:28
alors, tes vars1,2,3 sont des int je présume

j'ai galéré ossi avec ça !!!

char Buff[128+1];
char Ip[256+1];

itoa(Var1, Buff, 10); //convertir Var1 en char, stoké dans Buff, dans le systeme décimal
strcpy(Ip, Buff);
strcat(Ip, ".");

itoa(Var2, Buff, 10); //convertir Var1 en char, stoké dans Buff, dans le systeme décimal
strcat(Ip, Buff);
strcat(Ip, ".");

et tu continue, tu auras une chaine, avec des var1.var2.var3.var4


void Aurevoir( void ); //Bonne journée
3
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
17 janv. 2005 à 20:27
variante avec un seul buffer et un pointeur:

#include



int main()
{
int var[4]={192,68,410,1};
char ip[128];
char*p=ip;

for(int a=0;a<3;a++)
{
itoa(var[a],p,10);
if(var[a]<10) p++;
else if(var[a]<100) p+=2;
else p+=3;
*p='.';
p++;
}
itoa(var[3],p,10);
cout<<ip<<endl;
system("pause");
}

il ya surement moyen de faire mieux...
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 janv. 2005 à 20:29
char ip[52], *c;
c = ip;
ultoa(var1, ip,10);
while(*c) c++;
*c++ = '.';
ultoa(var2, c,10);
while(*c) c++;
*c++ = '.';
ultoa(var3, c,10);
while(*c) c++;
*c++ = '.';
ultoa(var4, c,10);

ciao...
BruNews, MVP VC++
3
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
18 janv. 2005 à 09:23
Sinon beaucoup plus simple (mais pas aussi performant...)

sprintf(ip,"%d.%d.%d.%d", var1, var2, var3, var4)

On ne force pas une curiosité, on l'éveille.
.................................................Daniel Pennac
3

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 janv. 2005 à 18:44
Joky > tu peux faire avec 1 seul buffer et un pointeur.

ciao...
BruNews, MVP VC++
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
17 janv. 2005 à 20:00
Comment ça ??? j'utilise qu'un buffer la non ? je lui alloue plusieur fois différente valeur. Enfin
je pense !!! Et pour le pointeur faut me faire voir si tu peux :$

Joky !!


void Aurevoir( void ); //Bonne journée
0
KC62 Messages postés 229 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 juin 2007
18 janv. 2005 à 08:29
Grand merci a tous ! gros coup main j'apprécie beaucoup.



KC62




On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
18 janv. 2005 à 12:11
Bah ouai en effet ya réponse accepté sur moi, mais les méthode de dletozeun et de BruNews, voir mm celle de gars louche sont bcp plus simple :o
Ptite préference pour celle de dletozeun, avec tableau.

Ptite remarque ossi : int var[4]={192,68,410,1};
C'est pas 3 le nombres d'éléments la ?


void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
18 janv. 2005 à 12:13
Ah non c'est bien 4, c'est bizarre


void Aurevoir( void ); //Bonne journée
0
KC62 Messages postés 229 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 juin 2007
18 janv. 2005 à 17:51
tout a fait ! jaV juste indiqué la réponse accepté histoire de dire que j'avais trouvé réponse a ma question sur ce post.



Encore merci.



KC62


On a pas toutes les solutions de tous les probleme mais chaque probleme à ses solutions ...
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
18 janv. 2005 à 19:33
joky> oui il y a bien 4 elementsdans le tableau mais le 1er terme correspond au rang 0 le deuxieme au rang 1 et anisi de suite...
0
Rejoignez-nous