Concaténé numérique + "." pour reconstruire un ip [Résolu]

Signaler
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007
-
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
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

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
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...
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
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++
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Joky > tu peux faire avec 1 seul buffer et un pointeur.

ciao...
BruNews, MVP VC++
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

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 ...
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Ah non c'est bien 4, c'est bizarre


void Aurevoir( void ); //Bonne journée
Messages postés
229
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 juin 2007

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 ...
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
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...