kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 30 oct. 2003 à 02:16
ouaip, bon ben apparemment, le caractere de fin de chaine (antislash 0) n'est pas affiche ici ...
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 30 oct. 2003 à 02:05
y'a des trucs qui ont mal passe :
champs[ligne][col] = '' ===> champs[ligne][col] = ' '
(utilise 2 fois, c'est "Egale_Apostrophe_AntiSlash_Zero_Apostrophe (au cas ou ca ne repasse pas encore une fois))
if (!IsDigit(IpText[i]) Quitte_... ===> if (!IsDigit(IpText[i])) Quitte_...
(il manque une parenthese apres [i])
sinon tu peux faire un truc du meme genre avec un seul tableau de unsigned char, et en faisant la conversion vers un int quand tu detecte un point
autre solution : utiliser la fonction char * strchr (char *str , int ch);
qui rend un pointeur vers la premiere occurence du caractere ch dans la chaine str, renvoie NULL si le caractere n'est pas trouve
PS : j'avais pas mis les include non plus
#include<ctype.h> // pour isdigit
#include<string.h> // pour strlen
#include<stdlib.h> // pour atoi
cs_JCpp
Messages postés334Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention 3 juillet 2010 29 oct. 2003 à 19:44
Comme je pensais, avec cette façon on à une recherche nettement plus rapide.
Ton code « kimmelf2 » ne fonctionne pas pour récupérer les 4 valeurs entre chaque point.
Le code sera mis a jour des que j’aurais résolu ce problème. Je vais continuer à optimiser la vitesse
cs_JCpp
Messages postés334Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention 3 juillet 2010 29 oct. 2003 à 13:05
Oui,
Pour une calculatrice un point correspond à une virgule. Je me suis trompé, bref c’est bien un point.
Normalement, le FastScannerIP devrai aller encore beaucoup plus vite.
J’ai constaté, ci on regard ci il y a un serveur par l’intermédiaire d’un PING avant d’essayer de se connecté.
On obtient vraiment un temps de réponse plus rapide.
Je vais rajouter ton code et le PING pour savoir ci il y a un SERVEUR.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 29 oct. 2003 à 02:29
Je te file un code au pied leve (j'ai pas teste, mais normallement, ca marche)
#define VIRGULE ','
#define POINT '.'
#define SEPARATEUR POINT
int i;
unsigned char champs[4][4];
int IP[4];
int ligne=0;
int col=0;
for (i=0;i<strlen(IpText);i++)
if (IpText[i]==SEPARATEUR)
{
champs[ligne][col]=' ';
col=0;
ligne++;
}
else
{
if (!IsDigit(IpText[i]) Quitte_car_le_ieme_caractere_n_est_pas_un_chiffre();
champs[ligne][col]=IpText[i];
col++;
}
champs[ligne][col]=' '
for (i=0;i<3;i++)
IP[i] = atoi(champs[i]);
ca devrais marcher .....
-IpText est la chaine de caractere qui contient l'adresse IP au format texte
-la "fonction" quitte_car..... dois etre remplacee par une gestion d'erreur (message + quitte la fonction ou le pgm par exemple ...)
-les define du debut sont la car tu parlais de virgules dans ta description. je pense que tu voulais dire des points, mais je m'adapte.
cs_JCpp
Messages postés334Date d'inscriptionsamedi 12 janvier 2002StatutMembreDernière intervention 3 juillet 2010 25 oct. 2003 à 22:45
Il est conseillé de ne pas utiliser de logiciel du style emule pour un ScannerIP
30 oct. 2003 à 02:16
30 oct. 2003 à 02:05
champs[ligne][col] = '' ===> champs[ligne][col] = ' '
(utilise 2 fois, c'est "Egale_Apostrophe_AntiSlash_Zero_Apostrophe (au cas ou ca ne repasse pas encore une fois))
if (!IsDigit(IpText[i]) Quitte_... ===> if (!IsDigit(IpText[i])) Quitte_...
(il manque une parenthese apres [i])
sinon tu peux faire un truc du meme genre avec un seul tableau de unsigned char, et en faisant la conversion vers un int quand tu detecte un point
autre solution : utiliser la fonction char * strchr (char *str , int ch);
qui rend un pointeur vers la premiere occurence du caractere ch dans la chaine str, renvoie NULL si le caractere n'est pas trouve
PS : j'avais pas mis les include non plus
#include<ctype.h> // pour isdigit
#include<string.h> // pour strlen
#include<stdlib.h> // pour atoi
29 oct. 2003 à 19:44
Ton code « kimmelf2 » ne fonctionne pas pour récupérer les 4 valeurs entre chaque point.
Le code sera mis a jour des que j’aurais résolu ce problème. Je vais continuer à optimiser la vitesse
29 oct. 2003 à 13:05
Pour une calculatrice un point correspond à une virgule. Je me suis trompé, bref c’est bien un point.
Normalement, le FastScannerIP devrai aller encore beaucoup plus vite.
J’ai constaté, ci on regard ci il y a un serveur par l’intermédiaire d’un PING avant d’essayer de se connecté.
On obtient vraiment un temps de réponse plus rapide.
Je vais rajouter ton code et le PING pour savoir ci il y a un SERVEUR.
Voici ce que je vais rajouter, tu en pence quoi ?
http://www.cppfrance.com/code.aspx?ID=10221
29 oct. 2003 à 02:29
#define VIRGULE ','
#define POINT '.'
#define SEPARATEUR POINT
int i;
unsigned char champs[4][4];
int IP[4];
int ligne=0;
int col=0;
for (i=0;i<strlen(IpText);i++)
if (IpText[i]==SEPARATEUR)
{
champs[ligne][col]=' ';
col=0;
ligne++;
}
else
{
if (!IsDigit(IpText[i]) Quitte_car_le_ieme_caractere_n_est_pas_un_chiffre();
champs[ligne][col]=IpText[i];
col++;
}
champs[ligne][col]=' '
for (i=0;i<3;i++)
IP[i] = atoi(champs[i]);
ca devrais marcher .....
-IpText est la chaine de caractere qui contient l'adresse IP au format texte
-la "fonction" quitte_car..... dois etre remplacee par une gestion d'erreur (message + quitte la fonction ou le pgm par exemple ...)
-les define du debut sont la car tu parlais de virgules dans ta description. je pense que tu voulais dire des points, mais je m'adapte.
25 oct. 2003 à 22:45