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 :

Manipulation de tableaux de structures


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut Manipulation de tableaux de structures
    Bonjour tout le monde,

    ça fait des lustres que je n'ai pas posté sur developpez ! Je suis actuellement en train de travailler sur un code qui n'est pas de moi que j'ai du modifier. Mon niveau en C est débutant je pense, je suis plutôt électronicien, la dernière fois que j'en ai un peu fait, ça doit remonter à 10 ans.

    Je me pose une question sur la solution à donner à un problème que je vais généraliser :

    si j'ai une structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct personnes {int age;int poids;};
    Si je créé un tableau de structures, ça doit donner de mémoire quelquechose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct personnes Dupond[10]
    Je peux utiliser les éléments comme ceci si j'ai bien compris

    En fait, dans mon cas, j'aimerais savoir s'il est possible de récupérer uniquement le sous tableau "age", j'aurais été tenté d'écrire des choses comme ceci

    mais ça ne fonctionne pas, ce qui ne m'étonne qu'à moitié car ça n'est pas vraiment un tableau "age" mais une variable de structure. En fait, je dois le donner en argument à une fonction mais je ne vois pas à quoi peut ressembler la syntaxe, d'ailleurs pas sûr que ça soit possible car je me demande dans l'espace mémoire s'il met les 10 valeurs ages et 10 valeurs de poids ou s'ils les intercalent entre elles niveau adresses...(je suppose que je dois donner une adresse en argument de la 1ere case...)


    Pour situer mon contexte de travail, il s'agit en réalité d'un tableau de structures composé d'une variable session (int) et d'une 2eme variable int "initialized" qu'on met à 0 ou 1 si la session est active ou non.

    Je dois utiliser des fonctions d'un driver et je dois lui passer un tableau de sessions. Mais comme il est imbriqué dans la structure, je ne vois pas comment faire niveau syntaxe. J'ai d'autres idées pour contourner le problème comme une boucle for pour récupérer les valeurs dans un tableau intermédiaire ou en cassant la structure en deux tableaux indépendants...mais ça complique les choses si une syntaxe existe pour pointer directement sur la partie de la mémoire qui m’intéresse...

    Si vous avez une idée pour éclairer ma lanterne, je suis preneur ! Merci à vous !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par soccersoft Voir le message
    j'aimerais savoir s'il est possible de récupérer uniquement le sous tableau "age"

    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
     
    // Create a type without struct
    // Note size_t, an unsigned int
    typedef struct s_one_person {
        size_t age;
        size_t weight;
    } t_one_person;
     
    // ...
    // The array
    t_one_person list_people[10];
     
    // Note the pointer
    t_one_person* person_Dupond = (list_people + 2);
     
    printf("Dupond a %lu ans et pese %lu kilos\n", person_Dupond->age, person_Dupond->weight);

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Les champs d'une structure sont contigües en mémoire. Éventuellement avec du padding pour les aligner.
    Les éléments d'un tableau sont contigües en mémoires.
    Age n'est pas un tableau, donc vouloir son sous-tableau n'a pas de sens.
    Soit tu veux accéder à un âge, tu dois d'abord récupérer une personne avec l'opérateur [] sur le tableau puis son âge avec l'opérateur . (point).
    Soit tu veux récupérer tous les âges dans un tableau, et dans ce cas tu dois créer un second tableau (de pointeurs) et assignés un (pointeur vers chaque) âge à chaque entrée.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    Ok merci Bousk, c'est ce qui me semblait aussi...je compte effectivement faire le dernier point récupérer tous les âges de la structure, je vais tenter de les mettre dans un tableau que j enverrai en argument.

    Merci.

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    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 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par soccersoft Voir le message
    je compte effectivement faire le dernier point récupérer tous les âges de la structure, je vais tenter de les mettre dans un tableau que j enverrai en argument.
    Pourquoi faire ? Tu as déjà ton tableau qui contient un âge et un poids. Il te gêne ce poids pour ton algo ? Que feras-tu avec ton tableau de pointeurs sur les âges (qu'il va alors falloir créer) que tu ne peux pas faire avec ton tableau de personnes que tu as déjà ?
    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]

  6. #6
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Citation Envoyé par foetus Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        size_t age;
        size_t weight;


    +1 parce que cela m'a fait rire

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

Discussions similaires

  1. Problème de manipulation de tableaux
    Par proff dans le forum Pascal
    Réponses: 8
    Dernier message: 01/04/2007, 10h07
  2. tableaux de structures, aidez-moi
    Par tannana dans le forum C
    Réponses: 2
    Dernier message: 22/02/2007, 19h02
  3. Réponses: 60
    Dernier message: 13/02/2007, 19h53
  4. Manipulation de tableaux de tableaux
    Par vargasvan dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2006, 13h54
  5. [Tableaux] Manipulation de tableaux
    Par orus8 dans le forum Langage
    Réponses: 3
    Dernier message: 04/10/2005, 15h10

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