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 :

Tableau dynamique de structures


Sujet :

C

Vue hybride

beb30 Tableau dynamique de... 28/04/2006, 16h31
Franck.H Heu là apparement tu as... 28/04/2006, 16h38
Gruik Bein disons que tu as deja... 28/04/2006, 16h41
beb30 deja premiere question ... 28/04/2006, 16h42
Swoög :faq: malloc renvoie un void,... 28/04/2006, 16h50
beb30 est ce que ca aurait du... 28/04/2006, 16h55
Franck.H Pourquoi insistes-tu sur ce... 28/04/2006, 17h07
Emmanuel Delahaye Ben non. Mauvais type ... 29/04/2006, 12h41
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Par défaut Tableau dynamique de structures
    Voila,

    j'ai une premiere structure déclaré comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct    
    {      char    name_MSG[100] ; 
        char    Lenght_MSG[10];
        char    *Datas;
    } Entetes ;  /* Entetes est le nom du type */
    Entetes entete[MAX_MSG] ;

    Je souhaiterai que
    char *Datas
    , soit en fait un tableau de structures contenant N structures comme défini ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct    
    {  
           char    Type_data[10];  
        char    Lenght_data[10]; 
    } Champs ;  /* Champs est le nom du type */
    Champs champ[MAX_CHPS] ;

    J'ai tenté un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //char *Datas = malloc(sizeof(Champs));
    char *Datas = malloc(sizeof(champ));
    Mais apparenment c pas comme ce qu il faut proceder

    Si qqun peut m'aider!!!

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Heu là apparement tu as essayé d'allouer un espace pour une chaîne avec la taille d'une structure
    Je ne vois pas vraiment le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Champs * p_champs = malloc (n * sizeof (* p_champs));
    Après tu peut utiliser realloc pour agrandir ton tableau si besoin est !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Bein disons que tu as deja déclaré un tableau de taille fixe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Champs champ[MAX_CHPS] ;
    Alors, pas trop utile d'en allouer un autre dynamiquement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Par défaut
    deja premiere question

    cet erreur est du a quoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cannot convert from 'void *' to 'Champs *'

  5. #5
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    malloc renvoie un void, je suppose que tu utilises un compilateur C++ pour qu'il te signale l'erreur : http://c.developpez.com/faq/c/?page=...POINTEURS_cast
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 213
    Par défaut
    est ce que ca aurait du résoudre le probleme..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Champs * p_champs = (char *)malloc (n * sizeof (* p_champs));

  7. #7
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    NON tu vois bien qu'il n'y a pas adéquation entre le type du pointeur assigné (Champs*) et la valeur assignée (char* après le cast)

    par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Champs * p_champs = (Champs *)malloc (n * sizeof (* p_champs));
    ça oui
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par beb30
    est ce que ca aurait du résoudre le probleme..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Champs * p_champs = (char *)malloc (n * sizeof (* p_champs));
    Pourquoi insistes-tu sur ce char* ? Y'a-t-il une raison particulière ou bien tu ne savais pas trop quoi mettre ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par beb30
    est ce que ca aurait du résoudre le probleme..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Champs * p_champs = (char *)malloc (n * sizeof (* p_champs));
    Ben non.
    • Mauvais type
    • Un typecast ne fait souvent que masquer le problème sans le corriger.
    • As-tu bien inclus <stdlib.h> ?
    • Ton compilateur est-il bien C et non C++ ?
    • L'extension de ton fichier source est-elle bien .c et non.cpp ni .C ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/02/2011, 15h56
  2. Tableau dynamique de structure
    Par diouflamine87 dans le forum Débuter
    Réponses: 11
    Dernier message: 16/03/2010, 22h20
  3. Tableau dynamique de structure
    Par sakura006 dans le forum Débuter
    Réponses: 6
    Dernier message: 14/10/2008, 17h29
  4. Tableau dynamique de structure
    Par kurk49 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/06/2008, 11h53
  5. TAD matrice (structure + tableau dynamique)
    Par supermanu dans le forum C
    Réponses: 10
    Dernier message: 13/11/2004, 20h04

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