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 :

Imbrication de structures


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9
    Par défaut Imbrication de structures
    Bonjour à tous,


    Je cherche à utiliser des structures imbriquées dans mon projet et c'est le dernier obstacle avant d'arriver à mes fins
    J'ai déjà cherché sur le forum (ou autres), et généralement pas de réponse qui fonctionne à la question.

    Voici mon .h
    Celui contient plus de données que ça, mais rien ne sert de surcharger, de même pour le main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct Informations{
    int id;
    }Informations;
     
    typedef struct Annuaire{
     
    Informations info;
    }Annuaire;

    Voici mon .c
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include "struct.h"
     
    /**
     * Programme de test des fonctions messages
     */
    int main(int argc, char **argv)
    {
    Annuaire *user;
     
    user->info.id = 10;
    printf("%d",user->info.id);
     
    return 0;
     
    }
    Impossible de savoir comment m'y prendre autrement. Tous les exemples sur le net utilisent la même façon de faire, donc j'ai du mal à voir d'où vient le problème! Je pensais qu'il fallait peut-être pas abuser des typedef mais cela ne vient pas de là. La compilation marche sans soucis, c'est à l'exécution que j'obtiens un beau segmentation fault au lieu d'afficher 10!


    Merci d'avance pour votre aide précieuse!


    Stochelo

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 833
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 833
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Stochelo Voir le message
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include "struct.h"
    
    /**
     * Programme de test des fonctions messages
     */
    int main(int argc, char **argv)
    {
    Annuaire *user;
    
    user->info.id = 10;
    printf("%d",user->info.id);
    
    return 0;
    
    }
    Impossible de savoir comment m'y prendre autrement. Tous les exemples sur le net utilisent la même façon de faire, donc j'ai du mal à voir d'où vient le problème! Je pensais qu'il fallait peut-être pas abuser des typedef mais cela ne vient pas de là. La compilation marche sans soucis, c'est à l'exécution que j'obtiens un beau segmentation fault au lieu d'afficher 10!


    Merci d'avance pour votre aide précieuse!


    Stochelo
    Salut

    Tu remplis un pointeur sans lui avoir alloué de mémoire...

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include "struct.h"
     
    /**
     * Programme de test des fonctions messages
     */
    int main(int argc, char **argv)
    {
    Annuaire *user;
    user=malloc(sizeof(Annuaire));
     
    user->info.id = 10;
    printf("%d",user->info.id);
    free(user);
     
    return 0;
     
    }

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include "struct.h"
     
    /**
     * Programme de test des fonctions messages
     */
    int main(int argc, char **argv)
    {
    Annuaire user;
     
    user.info.id = 10;
    printf("%d",user.info.id);
     
    return 0;
     
    }
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9
    Par défaut
    Oh merci beaucoup!

    Désolé pour mes lacunes

Discussions similaires

  1. redim Imbrication des structures de données
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/11/2007, 15h23
  2. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  3. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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