ChrOnOs83
Messages postés32Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention19 juin 2007
-
3 avril 2004 à 04:56
gasy72
Messages postés23Date d'inscriptionjeudi 2 mars 2006StatutMembreDernière intervention11 août 2006
-
4 mars 2006 à 02:33
Slt à ts,
tout dabor je suis dsl mais je ne savai pa tro comen resumé mon pb en quelque mot et c pr cela ke je né pa fai un sujet clair.
en realité jaimerai reussir a faire un programme qui donne son ip par messagebox.
le truc c ke j'ai dabord utilisé la la fonction trouvant l'ip de la source de laigle76 mais j'ai remarqué que chez certaine personne cela donne l'ip de leur carte rezo.
bref ensuite je me suis di qu'il valai mieu ke je le fasse avec en metan dans un char* la copi dune sortie d'un ipconif et en cherchan l'ip dans se char *.
voici en gro la fonction ki li le fichier txt sapelan findip.txt et se trouvant a la racine du c :
char mot[1000] = "\0";
char ipa[20]="\0";
FILE *ipconfig =fopen("c:\\findip.txt","r");
fgets(mot,1000,ipconfig);
fclose(ipconfig);
char chiffre[] = {'0','1','2','3','4','5','6','7','8','9','.','\0'};
char sous_reseau[] = {'2','5','5','.','2','5','5','.','2','5','5','.','2','5','5','\0'};
int i=0;
int j=0;
MessageBox (0,mot,"",0);
while (1)
{
i++;
j=0;
if (mot[i]==sous_reseau[j])
{
while (mot[i]==sous_reseau[j])
{
j++;
i++;
test[i] = mot[i];
}
if (j>=16)
{
i = i - (j + 1);
while(1)
{
i--;
if ((mot[i]==chiffre[0])||(mot[i]==chiffre[1])||(mot[i]==chiffre[2])||(mot[i]==chiffre[3])||(mot[i]==chiffre[4])||(mot[i]==chiffre[5])||(mot[i]==chiffre[6])||(mot[i]==chiffre[7])||(mot[i]==chiffre[8])||(mot[i]==chiffre[9])||(mot[i]==chiffre[10]))
{
while ((mot[i]==chiffre[0])||(mot[i]==chiffre[1])||(mot[i]==chiffre[2])||(mot[i]==chiffre[3])||(mot[i]==chiffre[4])||(mot[i]==chiffre[5])||(mot[i]==chiffre[6])||(mot[i]==chiffre[7])||(mot[i]==chiffre[8])||(mot[i]==chiffre[9])||(mot[i]==chiffre[10]))
{
i--;
}
i++;
while ((mot[i]==chiffre[0])||(mot[i]==chiffre[1])||(mot[i]==chiffre[2])||(mot[i]==chiffre[3])||(mot[i]==chiffre[4])||(mot[i]==chiffre[5])||(mot[i]==chiffre[6])||(mot[i]==chiffre[7])||(mot[i]==chiffre[8])||(mot[i]==chiffre[9])||(mot[i]==chiffre[10]))
{
ipa[j] = mot[i];
i++;
j++;
}
}
}
}
}
if (i==999)
{
strcpy(ipa,"non connecté");
break;
}
}
MessageBox (0,ipa,"",0);
return(0);
}
je me doute que se code est sousoptimisé :-) et jen suis dsl pr les puriste mais franchement apré avoir essayé fread, fgetc, et encor plein dotre fonction don je ne me souvien plus seul fgetc passé donc...
voici une copi de mon findip.txt :
Configuration IP de WindowsCarte Ethernet Connexion au réseau local: Statut du média . . . . . . . . . : Média déconnectéCarte PPP Internet ADSL : Suffixe DNS propre à la connexion : Adresse IP. . . . . . . . . . . . : 62.147.136.101 Masque de sous-réseau . . . . . . : 255.255.255.255 Passerelle par défaut . . . . . . : 62.147.136.101
dailleur a se propos quelque che se bizar se passe.
a la base mon findip.txt est bien fai avec des sot de ligne.
mais le probleme est qu'il comence par un sot de ligne et si je n"enleve pa se sor de ligne mon fgets(mot,1000,ipconfig) ne passe pas (mot=null).
a partir du momen ou je lenleve (avec le notpad) il devien comme la copi ke je vien de vous faire c a d en bordel...
sinon se qui decone dans ma source c que le MessageBox (0,mot,"",0) affiche bien le contenu de mon findip.txt mais par contre le MessageBox (0,ipa,"",0) affiche tjr non connecté...
bref si quelqu'1 trouve pouquoi c le k je lui en suis deja reconaissant ;-) sinon... jformat.
G0ss3Yn
Messages postés65Date d'inscriptiondimanche 12 janvier 2003StatutMembreDernière intervention 5 novembre 2010 5 avril 2004 à 19:57
Hello !
J'ai eu un peu la flemme d'étudier ton code.. :D
Alors pour t'aider quand même, j'ai programmé l'appli que tu veux, comme ça tu pourras regarder comment le faire de façon simple. J'utilise les fonctions C++ pour l'accés au fichier.... Attention donc.
Voilà !
G0ss3Yn... ( Bon coding a tous !)
ChrOnOs83
Messages postés32Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention19 juin 2007 5 avril 2004 à 21:01
merci bcp pr ta reponse G0ss3Yn !!!
le pb ke g encor c ke g pa la librairi fstream...
chui sur ke mon visual studio merde grave parceke g tro eu de pb avec stistoir de lectur de fichier (tu c pa tt se ke g essayé)
enf1 bref g kan meme reecri le code ke javai fai
il est plu clair mais sa marche tjr pa...
le voici o k ou :
test()
{
char mot[1000] = "\0";
char ipa[20]="\0";
char srezo[20];
FILE *ipconfig =fopen("c:\\findip.txt","r");
fgets(mot,1000,ipconfig);
fclose(ipconfig);
char chiffre[] = {'0','1','2','3','4','5','6','7','8','9','.','\0'};
char sous_reseau[1000];
int i=0;
int j=0;
int k=0;
MessageBox (0,mot,"",0);
strcpy (sous_reseau,"255.255.255.255");
while (i<1000)
{
i++;
while (mot[i]==sous_reseau[j])
{
srezo[j]=mot[i];
j++;
i++;
}
if (j>15)
{
MessageBox(0,srezo,"",0);
i = i - 30;
j=0;
strcpy(srezo,"\0");
srezo[j]=mot[i];
MessageBox(0,srezo,"",0);
while(1)
{
i--;
while ((mot[i]==chiffre[0])||(mot[i]==chiffre[1])||(mot[i]==chiffre[2])||(mot[i]==chiffre[3])||(mot[i]==chiffre[4])||(mot[i]==chiffre[5])||(mot[i]==chiffre[6])||(mot[i]==chiffre[7])||(mot[i]==chiffre[8])||(mot[i]==chiffre[9])||(mot[i]==chiffre[10])||(mot[i]==chiffre[11]))
{
ipa[j] = mot[i];
i--;
j++;
}
k=1;
if (j!=0){break;};
}
}
if (k!=0){break;}
}
//strcpy(ipa,"non connecté");
MessageBox (0,ipa,"",0);
return(0);
}
G0ss3Yn
Messages postés65Date d'inscriptiondimanche 12 janvier 2003StatutMembreDernière intervention 5 novembre 2010 5 avril 2004 à 23:53
Ok, ça ne marche pas apparemment parce que tu ne récupère pas toute la sortie dans ton buffer 'mot', mais que la première ligne donc c'est normal...
Voici le code à modifier pour que toute la sortie soit dans ton buffer 'mot' :
// On met la sortie de ipconfig dans findip.txt
system( "ipconfig > "C:\\findip.txt"" ) ;
// On ouvre le fichier
FILE *ipconfig = fopen("c:\\findip.txt","r");
// On récupère toute la sortie dans ton buffer ( mot )
while( fgets( buffer,1000,ipconfig ) != NULL )
strcat( mot, buffer ) ;
fclose(ipconfig);
Mais même comme çela ça ne marche pas, ton algorithme doit être certainement faux....
Quoiqu'il en soit, voici le code qui fonctionne, en C cette fois :D
ChrOnOs83
Messages postés32Date d'inscriptionmercredi 20 août 2003StatutMembreDernière intervention19 juin 2007 6 avril 2004 à 00:51
Exelent !!!
jvien de tester et sa marche nikel
franchement merci bcp pr ton aide !!
en plus grace a toi g bien compri le fonctionement de fgets et ainsi ke lutilisation de strtok pr rechercher un mot dans un char* (ici un saut de ligne) (enf1 c ske g compri jme plante petetre :-)...)
bref merci bcp !!!!!!!!!!!
@+
ChrOnOs
Vous n’avez pas trouvé la réponse que vous recherchez ?