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 dans une structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut Tableau dans une structure
    Bonsoir,

    J'ai une structure définie ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct {
      int nbcoups;
      coup coups[];
    }partie;
    Mais quand je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    partie part;
    part.coups=calloc(sizeof(coup), 3);
    Il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalid use of flexible array member.
    Je fais comment pour réserver la place en mémoire qu'il faut pour mon tableau?

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Salut,

    tu demandes à ton ami (?) Raikyn, ou tu fais une recherche sur le forum http://www.developpez.net/forums/d12...f/#post6633092

    EDIT:
    Par curiosité, la structure a été définie par un prof dans un sujet, ou vous faites tous parti d'une même équipe et quelqu'un de cette équipe a choisi cette structure ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut
    Oh tiens, je vais penser à le contacter !

    Ça a été défini par le prof.

    Et merci au fait

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut
    Finalement, j'ai quand même un problème qui me rend dingue :

    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
     
    partie coups_possible(othellier p, joueur j) {
        partie *part;
        partie res;
        // Allocation de l'espace mémoire nécessaire :
        part = malloc(sizeof(partie)+3*sizeof(coup));
        // Exemple de modification de mon tableau de tableau dans la structure part :
        part-> coups[0][0]='a';
        part-> coups[0][1]='a';
        part-> coups[2][0]='a';
     
        res=*part;
        free(part);
        return res;
    }
    Lorsque j'affiche res.coups[0][0] ça m'affiche bien 'a' mais lorsque j'essaie d'afficher (le résultat de la fonction).coups[0][0], ça m'affiche des caractères bizarres.
    Quelqu'un sait pourquoi?

  5. #5
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Tu libères la mémoire que tu vas utiliser ensuite.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Par défaut
    J'ai fais exprès de copier la structure dans une autre variable (res) pour pouvoir libérer la mémoire. C'est bon normalement non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    res=*part;
    free(part);
    return res;
    Quand j'ai mis ça à la place, ça ne fonctionne pas non plus...

    Finalement, j'ai fais d'autre tests et ce qu'il m'affiche avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("  %c  ", (*part).coups[0][0]);
    n'est pas la même chose qu'avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("  %c  ", res.coups[0][0]);
    dans la fonction.

    Alors que j'ai bien fait avant :
    Je me suis trompée tout à l'heure.


    C'est très bizarre...

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

Discussions similaires

  1. Utilisation d'un tableau dans une structure
    Par Angelique64 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/06/2009, 11h05
  2. allocation d'un tableau dans une structure
    Par Klaine dans le forum Débuter
    Réponses: 3
    Dernier message: 02/04/2008, 23h51
  3. Problème de tableau dans une structure
    Par zarbiman dans le forum Réseau
    Réponses: 5
    Dernier message: 15/12/2007, 18h21
  4. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  5. Tableau dans une structure
    Par Elstak dans le forum C
    Réponses: 3
    Dernier message: 25/04/2007, 11h45

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