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 :

probleme de comparaison de 2 chaines


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut probleme de comparaison de 2 chaines
    Bonjour,
    donc voila j'essaie de créer un fonction qui supprime un groupe depuis un GKeyFile ayant des soucis avec le fonction g_key_file_remove_group j'ai trouver une alternative mais je bloque sur un petit truc tout bête.
    en effet lorsque j'ajoute la condition suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!strcmp(groups[k],group))continue;
    dans mon code ci dessus(dans la première ligne de la boucle for), mon application plante. Et si je l'enlève le programme s'exécute mais ne fait pas exactement ce que je veux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    void delete_group(GtkComboBox *widget,gpointer data){
        GtkTreeModel   *  p_model = NULL;
       GtkTreeIter       iter;
       gchar* group=NULL;
     
     
     
       /* On recupere le modele qu'on a cree. */
       p_model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget));
     
       /* On recupere le GtkTreeIter de l'element courant. */
       if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX(widget), &iter))
       {
          /*
           * On recupere les donnees de l'element courant a savoir
           * un entier et une chaine de caracteres.
           */
          gtk_tree_model_get (
             p_model,&iter,
             0,&group,
             -1
          );
       }
     
     
        GKeyFile *  p_key_file;
        FILE* error;
        GError *pErreur=NULL;
     
     
        p_key_file = g_key_file_new ();
     
         if (! g_key_file_load_from_file (p_key_file,"config.ini",G_KEY_FILE_KEEP_COMMENTS,&pErreur))
    {
     
      error=fopen("error.txt","w");
      fprintf("Erreur: %s\n",pErreur->message);
      fclose(error);
      g_free(pErreur);
    }
    else{
     
     
       gsize *size_t;
       gchar** groups= g_key_file_get_groups(p_key_file,&size_t);
     
        int k;
        FILE* fichier;
         for(k=0;k<size_t;k++){
     
            if(!strcmp(groups[k],group))continue;
            gchar *pop = g_key_file_get_string (p_key_file, groups[k], "POP", NULL);
            gchar *smtp = g_key_file_get_string (p_key_file, groups[k], "SMTP", NULL);
            gchar *mail = g_key_file_get_string (p_key_file, groups[k], "Mail", NULL);
            gchar *user= g_key_file_get_string (p_key_file, groups[k], "UserName", NULL);
            gchar *pass = g_key_file_get_string (p_key_file, groups[k], "Password", NULL);
     
            fichier = fopen("config.ini2.txt","a");
     
            fprintf(fichier,"[%s]\nMail=%s\nPOP=%s\nUserName=%s\nPassword=%s\nSMTP=%s\n\n",groups[k],mail,pop,user,pass,smtp);
            fclose(fichier);
     
            }
     
        }
     
    g_key_file_free(p_key_file);
        g_rename("config.ini2","config.ini");
        gtk_tree_store_clear (GTK_TREE_STORE(data));
        loading_tree(GTK_TREE_STORE(data));
     
    }
    Si quelqu'un pouvait m'éclairer. Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Demande à ton compilateur de te donner un maximum de warning et prête y attention :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       gsize *size_t;
       gchar** groups= g_key_file_get_groups(p_key_file,&size_t);
     
        int k;
        FILE* fichier;
         for(k=0;k<size_t;k++){
    size_t est un pointeur sur un entier (le nom est mal choisi d'ailleurs, c'est aussi le nom d'un type utilisé par la libc), k est un entier, et tu les compares. Le compilateur peut probablement t'avertir au moment de la comparaison et au moment de l'appel à g_key_file_get_groups. Déclare le size_t comme étant un gsize size_t, ça devrait te débloquer un peu.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    non j'ai toujours le même souci. Et de plus si je supprime cette ligne de comparaison des deux chaines les instruction suivantes s'exécute parfaitement alors que j'utilise groups[k].

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Euh c'est bon j'ai trouver d'où venez mon problème je ne recuperait pas la chaine group depuis le bon widget ce qui faisait que group=NULL donc voila c'est bon je n'est plus de souci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de comparaison de chaines
    Par yous18 dans le forum Débuter
    Réponses: 10
    Dernier message: 20/09/2007, 14h53
  2. Probleme de coupe dans une chaine
    Par cryptorchild dans le forum Langage
    Réponses: 3
    Dernier message: 23/12/2005, 00h39
  3. [Dates] Probleme de comparaison de date
    Par mathieu77186 dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2005, 18h21
  4. Comparaison de 2 chaines
    Par harlock59 dans le forum Linux
    Réponses: 1
    Dernier message: 10/12/2005, 02h06
  5. Réponses: 5
    Dernier message: 06/10/2003, 18h49

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