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

C Discussion :

Pointeurs double sur struct


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut Pointeurs double sur struct
    Bonjour,

    Comment fait-on pour accéder à un pointeurs double dans un struct voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct {
        char **noms;
        int nbNoms;
    } Groupe;
     
    typedef struct n {
        struct n *suiv;
        Groupe groupe;
    } N;
    Disons que je veux accéder au champ noms il faudrait que je fasse un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int numeroNoeud(N *listeDeGroupes, char *nom);
     
    listeDeGroupes->groupe.noms
    Mais évidemment ça me donne des erreurs de compilation. Pouvez-vous m'aider ???

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    L'expression listeDeGroupes->groupe.noms est valide. C'est l'usage dont tu en fais qui peut ne pas être correct. Montre tout ton code.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut Pointeurs
    En faite ce que je veux faire c'est de prendre le param nom et faire une recherche dans ma liste et comparer si je trouve ce nom. À ce moment, je retourne le numero du noeud dans la liste. Si c'est le premier noeud 0 si on ne trouve pas -1.
    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
     
    //Donc voici comme je l'avais pensé :
     
    int numeroNoeud(N *listeDeGroupes, char *nom)
    {
       int trouve, trouvenumero;
       N *i;
       i = listeDeGroupes;
       numero = -1;
       trouvenumero -1;
     
    if(liste != 0)
    {
       numero = 0;
       if(strcmp(noms,i->groupe.noms)==0)
          trouvenumero = numero;
       while(i->suiv != NULL)
       {
           i = i->suiv;
          numero ++;
         if(strcmp(noms,i->groupe.noms)==0)
           trouvenumero = numero;
     
       }
     
    return trouvenumero ;
    }

  4. #4
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Cette écriture :
    t'obliges à utiliser l'opérateur « -> » comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listeDeGroupes->groupe->noms
    personnellement je ne vois aucune raison d'utiliser deux étoiles dans ton cas.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut
    Quand je compile j'ai cette erreur :

    error C2232: '->noms' : opérande gauche avec type 'struct', utilisez '.'

  6. #6
    Membre confirmé
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Par défaut
    est ce que tu as allouer correctement la memoire pour les noms char** ? 'erreur peut etre a ce niveau .
    si tu met tout le code ca serait mieux .

Discussions similaires

  1. Pointeur sur struct
    Par Freedom57 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/10/2011, 20h23
  2. Il existe un nom en double sur le reseau - Sans issue
    Par rpoulin dans le forum Hardware
    Réponses: 4
    Dernier message: 14/02/2007, 09h50
  3. Cacher le pointeur souris (sur tout le systeme)
    Par Platypus dans le forum MFC
    Réponses: 4
    Dernier message: 20/02/2006, 17h40
  4. Réponses: 3
    Dernier message: 11/08/2005, 15h54
  5. pointeur multiple sur un objet
    Par Arnaud-h dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/06/2004, 11h33

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