IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Vérification variable gchar


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut Vérification variable gchar
    Bonjour,
    j'ai fait une application grace à gtk pour générer un fichier de configuration pour un routeur CISCO.

    Seulement, je voulais vérifier que les champs IP soient comprit entre 0 et 255.
    J'ai d'abord testé dans le programme(ip[0] une variable gchar) :

    if (atoi(ip[0]) > 0 && atoi(ip[0]) < 255)
    {
    }
    else
    {
    ip[0] = "255";
    }

    Ca fonctionne. Seulement, j'ai 48 champs à vérifier, je ne vais pas tous les faire les uns après les autres, et c'est là que je bloque

    En effet, j'ai essayé de faire une fonction ou je passe ip[0] en argument, mais ça me met des trucs du genre pointeur error, et sinon qq chose comme ça :
    ip[0] = verif(atoi(ip[0]))
    Où la fonction verif fait un return.
    Seulement, il faudrait remettre en chaîne de caractère, et je ne suis pas sur que ça marche même comme ça.

    Si quelqu'un voit ce que je veux dire, et qu'il peut m'aider, merci ^^

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Par défaut
    Salut,

    et comment est la declaration des champs ip ?
    L'instruction ip[o] = "255" est un peu suspecte.

    Fredy

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Par défaut
    Salut,
    déjà un guchar serait plus approprié qu'un gchar me semble-t-il, afin de coder des valeurs de 0 à 255.
    Ensuite ton utilisation de atoi() est mauvaise : elle est censée convertir une chaine de caractères (char* ou gchar*) en int. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char* s = "25";
    int n = atoi("25") /* n vaut 25 */
    Or tu manipules des caractères isolés. Tu peux manipuler directement les valeurs des caractères, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(ip[0] >= 255)
      ip[0] = 255
    Cerise sur le gâteau : le domaine des unsigned char ou guchar s'étend pile-poil de 0 à 255. Ta vérification est donc inutile vu que le seul fait que ta variable soit déclarée guchar t'assure qu'elle est comprise entre 0 et 255 (inclus).
    De manière plus générale, la GLib fournit une macro CLAMP qui permet de vérifier qu'une variable est bien comprise entre 2 bornes.

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par BVertut
    Cerise sur le gâteau : le domaine des unsigned char ou guchar s'étend pile-poil de 0 à 255.
    Pas forcement : http://emmanuel-delahaye.developpez.com/init_c.htm#type

    atoi saimal !

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 36
    Par défaut
    Je suis pourtant à peu près sûr qu'à la différence des autres types, le domaine indiqué pour les signed / unsigned char est le domaine exact, et non minimal. À vérifier.
    Dans le cas contraire, la macro CLAMP devrait convenir au désir de notre PO.

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Par défaut
    Je vous explique pk c'était gchar ^^
    Parmi la dose de variable, il y a ip[0]
    const gchar *ip[0], *ip[1]......;
    ip[0] = gtk_entry_get_text(GTK_ENTRY(app->ip[0]));
    ip[1] = gtk_entry_get_text(GTK_ENTRY(app->ip[1]));
    .
    .
    .

    j'ai pas trouvé autre chose que atoi, mais je vais essayer de sauvegarder dans un guchar pour voir ce que ça donne

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/12/2008, 14h01
  2. [MySQL] vérification des variables avant mise à jour
    Par batoule80 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/11/2008, 11h18
  3. Réponses: 2
    Dernier message: 25/06/2008, 11h31
  4. Vérification du type d'une variable GET
    Par gwendalfr dans le forum Langage
    Réponses: 3
    Dernier message: 13/06/2008, 18h32
  5. vérification variable formulaire ?
    Par isa150183 dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2007, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo