Help, Petit pb d'IP

cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010 - 30 oct. 2003 à 20:07
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 30 oct. 2003 à 21:34
J’ai besoin de récupérer les 4 valeurs du IP entre chaque point en Int, pour pouvoir ensuite les incrémenter.

On ma proposer une solution qui n’est pas terrible a mon goût.
http://www.cppfrance.com/code.aspx?ID=17385
Donc, j’ai cherché une autre solution plus simple.
J’ai un problème de conversion avec atoi, ci vous pouvez m’aider sa serai sympa.
(Encore une chose, grâce au Forum, j’ai appris beaucoup de chose en programmation, peut être même que les sources.)

Je reviens à mes moutons bééé.

string s1("007.007.007.007"); //IP

int pts=1;
char IPnbr[4];

// ici je cherche le point et je le mémorise
for (int i=0; i<14; i++)
{
if(s1.substr(i,1)==".") {IPnbr[pts]=i; pts++;}
}

// bug a cause de atoi
int Ip1 = atoi( s1.substr(0,IPnbr[1]-1) );
int Ip2 = atoi( s1.substr(IPnbr[i]+1,IPnbr[1]-1) );
int Ip3 = atoi( s1.substr(IPnbr[i]+1,IPnbr[1]-1) );
int Ip4 = atoi( s1.substr(IPnbr[i]+1,IPnbr[1]-1) );


Ci vous avez une solution encore plus simple, je suis preneur.
Je suis quand même étonner de ne pas voir cette partie de code qui peut être utile pour le IP.

Merci

3 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
30 oct. 2003 à 20:44
Salut,

char * c;
char szIP[32] = "160.144.19.52";
int N[4];
int i;

c = szIP;
for(i=0; i<4; i++)
{
N[i] = atoi(c);
while(*c++ != '.' && *c);
}

les 4 nombres sont dans le tableau N[].
0
cs_JCpp Messages postés 334 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 3 juillet 2010
30 oct. 2003 à 21:19
Cool ça fonctionne,
merci aardman.

Je ne comprend pas trop cette ligne.
while(*c++ != '.' && *c);

Bravo tout de même, je ne pensais pas que l’on pouvais faire cette chose en ci peux de ligne.
(J’étais mal parie avec ma solution)

Je vais pouvoir faire une mise a jour de la source.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
30 oct. 2003 à 21:34
Salut,
while(*c++ != '.' && *c);
Avance le pointeur ' c ' jusqu'au caractere qui suis le ' . '.
Si ' c ' pointe sur un caractere 0 (le 0 final de la chaine), on quitte la boucle (car apres le 4eme numéro d'une chaine IP il n'y a pas de point mais le zero final) ca evite de faire avancer le pointeur en dehors de la chaine.
0
Rejoignez-nous