begin process at 2012 02 05 04:44:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > LIRE UNE IP(CONVERSION D'IP (CHAR EN INT)

LIRE UNE IP(CONVERSION D'IP (CHAR EN INT)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Niveau :Débutant Date de création :06/08/2003 Date de mise à jour :06/08/2003 20:06:11 Vu :2 367

Auteur : chris5874

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Ce ptit programme permet de lire l'adresse ip que l'utilisateur entre,et de la convertir en 4 nombres entiers(ip1,ip2,ip3,ip4).A la fin du programme,il vérifie que l'ip entrée sois bien correcte(cad,entre 0 et 255)
je remercie au passage toutes les personnes m'ayant aidé à trouver la solution! ;)
j'espère que cette source est assez claire et surtout qu'elle aidera les débutants!! ;)

Source

  • #include <iostream.h>
  • #include <string.h>
  • #include <stdio.h>
  • int main()
  • {
  • char ip[16],temp;
  • int longueur,n,ip1=0,ip2=0,ip3=0,ip4=0,i=0;
  • cout <<"entrez une ip au format a.b.c.d\n";
  • cin >> ip;
  • cout <<"cette ip est une chaine de caracteres de longeur " ;
  • longueur = strlen (ip);//fonction permettant de retourner la longeur de la chaine de caractere!
  • cout << longueur<<endl;//ensuite on l'affiche!
  • for (n=0;n<longueur;n++)/*on teste les différents caracteres de l'ip pour connaitre leurs valeurs entieres*/
  • {temp=ip[n];
  • cout<<"lecture caractere" <<n<<":"<<temp<<endl;
  • if (temp == (char)48)
  • {cout <<"le programme reconnait la valeur 0 dans temp\n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+0;
  • break;
  • case 1:ip2=(ip2*10)+0;
  • break;
  • case 2:ip3=(ip3*10)+0;
  • break;
  • case 3:ip4=(ip4*10)+0;
  • break;
  • }
  • }
  • else if (temp == (char)49)
  • {cout <<"le programme reconait la valeur 1 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+1;
  • break;
  • case 1:ip2=(ip2*10)+1;
  • break;
  • case 2:ip3=(ip3*10)+1;
  • break;
  • case 3:ip4=(ip4*10)+1;
  • break;
  • }
  • }
  • else if (temp == (char)50)
  • {cout <<"le programme reconait la valeur 2 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+2;
  • break;
  • case 1:ip2=(ip2*10)+2;
  • break;
  • case 2:ip3=(ip3*10)+2;
  • break;
  • case 3:ip4=(ip4*10)+2;
  • break;
  • }
  • }
  • else if (temp == (char)51)
  • {cout <<"le programme reconait la valeur 3 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+3;
  • break;
  • case 1:ip2=(ip2*10)+3;
  • break;
  • case 2:ip3=(ip3*10)+3;
  • break;
  • case 3:ip4=(ip4*10)+3;
  • break;
  • }
  • }
  • else if (temp == (char)52)
  • {cout <<"le programme reconait la valeur 4 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+4;
  • break;
  • case 1:ip2=(ip2*10)+4;
  • break;
  • case 2:ip3=(ip3*10)+4;
  • break;
  • case 3:ip4=(ip4*10)+4;
  • break;
  • }
  • }
  • else if (temp == (char)53)
  • {cout <<"le programme reconait la valeur 5 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+5;
  • break;
  • case 1:ip2=(ip2*10)+5;
  • break;
  • case 2:ip3=(ip3*10)+5;
  • break;
  • case 3:ip4=(ip4*10)+5;
  • break;
  • }
  • }
  • else if (temp == (char)54)
  • {cout <<"le programme reconait la valeur 6 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+6;
  • break;
  • case 1:ip2=(ip2*10)+6;
  • break;
  • case 2:ip3=(ip3*10)+6;
  • break;
  • case 3:ip4=(ip4*10)+6;
  • break;
  • }
  • }
  • else if (temp == (char)55)
  • {cout <<"le programme reconait la valeur 7 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+7;
  • break;
  • case 1:ip2=(ip2*10)+7;
  • break;
  • case 2:ip3=(ip3*10)+7;
  • break;
  • case 3:ip4=(ip4*10)+7;
  • break;
  • }
  • }
  • else if (temp == (char)56)
  • {cout <<"le programme reconait la valeur 8 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+8;
  • break;
  • case 1:ip2=(ip2*10)+8;
  • break;
  • case 2:ip3=(ip3*10)+8;
  • break;
  • case 3:ip4=(ip4*10)+8;
  • break;
  • }
  • }
  • else if (temp == (char)57)
  • {cout <<"le programme reconait la valeur 9 dans temp \n";
  • switch (i)
  • {case 0:ip1=(ip1*10)+9;
  • break;
  • case 1:ip2=(ip2*10)+9;
  • break;
  • case 2:ip3=(ip3*10)+9;
  • break;
  • case 3:ip4=(ip4*10)+9;
  • break;
  • }
  • }
  • else if (temp == (char)46)
  • {cout <<"le programme reconait la valeur . dans temp \n";
  • i++;
  • }
  • else if (temp == (char)42)
  • cout <<"le programme reconait la valeur * dans temp \n";
  • //test des caracteres,est-ce que c un . ou n'importe quel chiffre?
  • //si oui (=un chiffre)on fait des operations avec
  • }
  • //ensuite on affiche les valeurs
  • cout <<"voici les 4 chiffres de l'ip:\n"<<
  • ip1<<"\t"<<ip2<<"\t"<<ip3<<"\t"<<ip4<<"\t";
  • /*puis on teste,normalement on devrais d'abord tester et ensuite
  • afficher les valeurs,mais bon,c juste un début,pour voir si le
  • prog fonctionne*/
  • if (ip1>255 || ip2>255 ||ip3>255|| ip4>255)
  • cout <<"l'ip n'est pas valide car :\n";
  • if (ip1>255)
  • cout<<"ip1 est superieur a la valeur normale\n";
  • if (ip2>255)
  • cout <<"ip2 est superieur a la valeur normale\n";
  • if (ip3>255)
  • cout <<"ip3 est superieur a la valeur normale\n";
  • if (ip4>255)
  • cout <<"ip4 est superieur a la valeur normale \n";
  • cout<<"fin du progz ;)\n";
  • getchar();
  • return 0;
  • }
#include <iostream.h>
#include <string.h>
#include <stdio.h>

int main()
{
	char ip[16],temp;
	int longueur,n,ip1=0,ip2=0,ip3=0,ip4=0,i=0;

	cout <<"entrez une ip au format a.b.c.d\n";
	cin >> ip;
	cout <<"cette ip est une chaine de caracteres de longeur " ;
	longueur = strlen (ip);//fonction permettant de retourner la longeur de la chaine de caractere!

	cout << longueur<<endl;//ensuite on l'affiche!

for (n=0;n<longueur;n++)/*on teste les différents caracteres de l'ip pour  connaitre leurs valeurs entieres*/
{temp=ip[n];
	cout<<"lecture caractere" <<n<<":"<<temp<<endl;
if (temp == (char)48)
{cout <<"le programme reconnait la valeur 0 dans temp\n";
switch (i)
{case 0:ip1=(ip1*10)+0;
break;
case 1:ip2=(ip2*10)+0;
	break;
case 2:ip3=(ip3*10)+0;
	break;
case 3:ip4=(ip4*10)+0;
	break;
}
}
else if (temp == (char)49)
{cout <<"le programme reconait la valeur 1 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+1;
break;
case 1:ip2=(ip2*10)+1;
	break;
case 2:ip3=(ip3*10)+1;
	break;
case 3:ip4=(ip4*10)+1;
	break;
}
}
else if (temp == (char)50)
{cout <<"le programme reconait la valeur 2 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+2;
break;
case 1:ip2=(ip2*10)+2;
	break;
case 2:ip3=(ip3*10)+2;
	break;
case 3:ip4=(ip4*10)+2;
	break;
}
}
else if (temp == (char)51)
{cout <<"le programme reconait la valeur 3 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+3;
break;
case 1:ip2=(ip2*10)+3;
	break;
case 2:ip3=(ip3*10)+3;
	break;
case 3:ip4=(ip4*10)+3;
	break;
}
}
else if (temp == (char)52)
{cout <<"le programme reconait la valeur 4 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+4;
break;
case 1:ip2=(ip2*10)+4;
	break;
case 2:ip3=(ip3*10)+4;
	break;
case 3:ip4=(ip4*10)+4;
	break;
}
}
else if (temp == (char)53)
{cout <<"le programme reconait la valeur 5 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+5;
break;
case 1:ip2=(ip2*10)+5;
	break;
case 2:ip3=(ip3*10)+5;
	break;
case 3:ip4=(ip4*10)+5;
	break;
}
}
else if (temp == (char)54)
{cout <<"le programme reconait la valeur 6 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+6;
break;
case 1:ip2=(ip2*10)+6;
	break;
case 2:ip3=(ip3*10)+6;
	break;
case 3:ip4=(ip4*10)+6;
	break;
}
}
else if (temp == (char)55)
{cout <<"le programme reconait la valeur 7 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+7;
break;
case 1:ip2=(ip2*10)+7;
	break;
case 2:ip3=(ip3*10)+7;
	break;
case 3:ip4=(ip4*10)+7;
	break;
}
}
else if (temp == (char)56)
{cout <<"le programme reconait la valeur 8 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+8;
break;
case 1:ip2=(ip2*10)+8;
	break;
case 2:ip3=(ip3*10)+8;
	break;
case 3:ip4=(ip4*10)+8;
	break;
}
}
else if (temp == (char)57)
{cout <<"le programme reconait la valeur 9 dans temp \n";
switch (i)
{case 0:ip1=(ip1*10)+9;
break;
case 1:ip2=(ip2*10)+9;
	break;
case 2:ip3=(ip3*10)+9;
	break;
case 3:ip4=(ip4*10)+9;
	break;
}
}
else if (temp == (char)46)
{cout <<"le programme reconait la valeur . dans temp \n";
i++;
}
else if (temp == (char)42)
cout <<"le programme reconait la valeur * dans temp \n";

//test des caracteres,est-ce que c un . ou n'importe quel chiffre?
//si oui (=un chiffre)on fait des operations avec


}




//ensuite on affiche les valeurs
cout <<"voici les 4 chiffres de l'ip:\n"<<
ip1<<"\t"<<ip2<<"\t"<<ip3<<"\t"<<ip4<<"\t";

/*puis on teste,normalement on devrais d'abord tester et ensuite 
afficher les valeurs,mais bon,c juste un début,pour voir si le 
prog fonctionne*/

if (ip1>255 || ip2>255 ||ip3>255|| ip4>255)
cout <<"l'ip n'est pas valide car :\n";
if (ip1>255)
cout<<"ip1 est superieur a la valeur normale\n";
if (ip2>255)
cout <<"ip2 est superieur a la valeur normale\n";
if (ip3>255)
cout <<"ip3 est superieur a la valeur normale\n";
if (ip4>255)
cout <<"ip4 est superieur a la valeur normale \n";

 cout<<"fin du progz ;)\n";
getchar();	
return 0;
}

 Conclusion

Ce petit programme n'est pas optimisé,(et oui,c fait pour que tout le monde comprenne rapidement)
je publierai peut-etre une source ou le code sera un peu + optimisé!(par contre,je ne sais pas quand je trouverai le temps!)
en tout cas,j'aimerai remercier tous ceux qui m'ont aidé(code sources et ses membres aussi ;)  
j'espère que cette source va etre utile aux newbies!
en tout cas,faites moi part de vos remarques concernant ma source!
merci d'avance ;)


 Sources de la même categorie

Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53
FONCTION : CHAR * AJUSTERTAILLECHAINE() par Rockanos

Commentaires et avis

Commentaire de JCDjcd le 06/08/2003 23:24:30

"Ce petit programme n'est pas optimisé,(et oui,c fait pour que tout le monde comprenne rapidement)"

Meme cette version non-optimisee, je n'y comprend RIEN

Commentaire de chris5874 le 07/08/2003 14:32:30

bon ptite explication pour ceux qui n'arrievtn pas à suivre:
tout d'abord l'utilisateur entre son ip,
celle-ci est d'office en char!
ensuite avec une boucle for,on lis chacun des caracteres de la chaine,
et on fait des calculs avec
i est une variable qui détermine à quel entier on doit rentrer la valeur(0 pour ip1,1pour ip2,2pour ip3,3 pour ip4)
ip1,ip2,ip3,ip4 étant les entiers que l'on obtient à la fin!
donc on calcule de la manière suivante=&gt;on lis le caractere,
suivant la valeur de i,on multiplie un des entiers finaux(ip1...4)par 10 et on ajoute la valeur lue actuellement!
temp étant une variable ou le caractere lu est mis dedans TEMPorairement car à chaque tour de boucle,temp contient le caractere suivant de l'ip!
à la fin du prog,on affiche les différents entiers lus dans l'ip,
et puis on les teste pour savoir si l'ip est valide ou non!
j'espère que c un peu + clair comme ça!
dsl de n'avoir pas expliqué un peu + !(je pensais que le prog parle de lui meme,mais apparemment c pas le cas)
donc,s'il y a d'autres commentaires,n'hésitez pas,faites m'en part! ;)

Commentaire de JCDjcd le 07/08/2003 16:41:59

pouquoi tu ne fais pas un tableau de taille 4 representer ip1 a ip4
Comme ca au lieu de tes switch :
**************************switch (i)
{case 0:ip1=(ip1*10)+0;
break;
case 1:ip2=(ip2*10)+0;
    break;
case 2:ip3=(ip3*10)+0;
    break;
case 3:ip4=(ip4*10)+0;
    break;
}
****************************
tu fais :
****************************
ip[i-1]=(ip[i]*10)+0;
**************************

Commentaire de JCDjcd le 07/08/2003 16:42:37

non c'est
ip[i]=(ip[i+1]*10)+0;

Commentaire de chris5874 le 07/08/2003 17:42:58

effectivement,ta solution serait plus simple!
seulement comme je suis débutant,je ne suis pas encore vraiment familier avec les tableaux,c'est en partie pour cela que je ne les ai que rarement utilisés(voire pas du tout)
en fait,g juste quelques rares notions du comment faire un tableau,donc g préféré une méthode + longue et barbante,mais en etant sur que ça marche!
merci de m'avoir conseillé,tes conseils sont toujours très utiles ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,498 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales