[C++/linux] Comparer contenue d'un string

Fermé
Emendiel - 8 févr. 2008 à 20:44
 Goundy - 30 avril 2008 à 18:42
Bonjour,

Alors voila je développe actuellement un programme qui dois se connecter a une caméra Ethernet en mode connecté. J'arrive a me connecter sans problème mais j'ai un petit soucis mineur mais un peu embêtant quand même.

Voila donc mon problème:

Pour me connecter je demande a l'utilisateur d'entrer l'adresse IP de la caméra. Seulement l'utilisateur peux très bien m'écrire : 123456789 plutôt qu'une vrai IP

D'ailleurs la fonction client.sin_addr.s_addr = inet_addr(IPCam.c_str()); // IPCam contient la chaîne "123456789"

transforme 123456789 en ip -> 7.91.205.21
transforme 1234 en --> 0.0.4.210 // IP impossible

et dans le cas présent cette IP existe donc mon programme ce connecte dessus ce qui est embêtant (je me connecte sur le port 80)

donc ce que je voudrais faire c'est vérifier le contenue de ma variable IPCam avant de la mettre dans la fonction.
Vérifier quelle soit bien au format 255.255.255.255

j'ai essayer la fonction strcmp()

mais elle ne fais que comparer 2 chaînes et je n'arrive pas a faire une comparaison ou mon programme regarderais si ma chaîne est au format ***.***.***.***

Donc si vous avez compris ce que je veux et que vous avez des idées je suis plus que preneur !

merci d'avance
A voir également:

5 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 févr. 2008 à 22:09
Salut,

Avec sprintf, et comme format "%d.%d.%d.%d", tu récupères chacun des nombres. Et après tu vérifies qu'ils sont strictement positifs et inférieurs à 255.

Cordialement
0
Hum merci pour cette solution que j'aurais du penser lol merci c'etait trop evident ^^ comme quoi il suffit de penser simple ^^ merci je test ca demain la je vais me coucher ^^
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 févr. 2008 à 22:46
Pas de quoi ;)
0
J'ai le même souci mais pour comparer des caractères lettres...
Je chercher à supprimer les lignes d'un Memo qui commencent par les mêmes caratères contenus dan un Edit...
J'ai chercher à comparer les caractères un par un mais j'ai du mal à crer une boucle correcte...
Une idée?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Salut.
C'est pas sprintf qu'il faut utiliser mais sscanf!
Voici un exemple bête:
[code]
#include <stdio.h>
#include <string.h>

int main (int agrc, char* argv[])
{
int ip[4];
char* sip = argv[1];
int g;

g = sscanf (sip, "%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]);
if (g == 4)
{
printf ("%d.%d.%d.%d\n", ip[0], ip[1], ip[2], ip[3]);
}


return 0;
}
[/code]

Enano:
C'est simple ...

POUR ligne = chaque ligne du memo FAIRE // je sais pas comment récupérer ces lignes tu dois savoir
for (i=0; i<ligne.longueur(); i++)
{
si (ligne[i] != EDIT.Text[i]){
SupprimerLigneCourranteDuMemo;
break;
}
}
0