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 :

les structures de données


Sujet :

C

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Points : 55
    Points
    55
    Par défaut les structures de données
    bonjour ts le monde,,
    voila j'ai un petit probleme avec les files en C,,je veux utiliser deux types de structure l'une pointe vers l'autre,
    j'ai fait cette declaration et je voulais savoir si elle etait juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct PCB	{
    		int nom,t_debut,t_fin;
    		struct PCB *svt_bloc;
    		struct PCB *tete;
    		struct file*svt_etat;
    		struct file*svt_action;
    		struct PCB*queue;
    		}PCB;
    typedef struct file	{
    		int nom_proc,nom_act,temps;
    		struct file *svt_file;
    		struct file *tete;
    		struct file*queue;
    		}file ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct PCB*p;struct file*action
    bon aprés avoir insrere dans la file action j'ai fait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p->svt_action=action->tete
    c'est juste??j'ai fait le lien entre les pointeurs??

    un autre probleme c'est lors du defilement est ce que le fait de defiler mon struct*p va faire le defilement de la file action????
    quand je veux acceder a action->nom_act comment dois je proceder??

    Merci bien de m'aider,,je viens de commencer dans la programmation en c et mes information sont limités!!!

  2. #2
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    Bonjour,

    si tu utilise file dans PCB déclare la en premier
    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
     
    typedef struct file_	{
    		int nom_proc,nom_act,temps;
    		struct file_ *svt_file;
    		struct file_ *tete;
    		struct file_*queue;
    		}file ;
     
     
    typedef struct PCB_	{
    		int nom,t_debut,t_fin;
    		struct PCB_ *svt_bloc;
    		struct PCB_ *tete;
    		struct file*svt_etat;
    		struct file*svt_action;
    		struct PCB*queue;
    		}PCB;

    La tu déclare des poiteurs de structure, est ce que tu alloues la mémoire qui va bien ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct PCB*p;struct file*action
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    p = (PCB *)malloc(sizeof(PCB));
    action = (file *)malloc(sizeof(action));
    Après ça semble correcte (warning : je viens de me réveiller...)

    Quand tu compiles utilises le drapeau -Wall !

    Merci bien de m'aider,,je viens de commencer dans la programmation en c et mes information sont limités!!!
    Autant que les miennes, tu as google comme moi

    Bon courage

  3. #3
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par trax44 Voir le message
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    p = (PCB *)malloc(sizeof(PCB));
    action = (file *)malloc(sizeof(action));
    A quoi servent les transtypages ?

    Il y a une erreur de taille... (action a la taille d'un pointeur).

    http://emmanuel-delahaye.developpez....tes.htm#malloc

    Je recommande ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    {
       PCB *p = malloc (sizeof *p);
       if (p != NULL)
       {
          file *p_action = malloc (sizeof *p_action);
          if (p_action != NULL)
          {
             /* etc. */
    Penser à libérer ce qui a été alloué quand on ne s'en sert plus...
    Pas de Wi-Fi à la maison : CPL

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    80
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 80
    Points : 55
    Points
    55
    Par défaut
    MERCI beaucoup,,pour votre aide.

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

Discussions similaires

  1. initialiser les structures de données
    Par farid0031 dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/06/2009, 20h43
  2. Question sur les structures de données
    Par sliderman dans le forum Débuter
    Réponses: 8
    Dernier message: 16/07/2008, 20h40
  3. Besoin d'aide pour les structures de données dynamiques
    Par aurelie689 dans le forum Pascal
    Réponses: 3
    Dernier message: 26/12/2007, 21h29

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