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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 52
    Points : 15
    Points
    15

    Par défaut utilisation de tableau dans cette structure

    Bonjour a toutes et a tous,
    Je souhaiterai modifier ce code afin d'utiliser non pas "menbre1, menbre2 etc... mais plutot un tableau qui contiendrai chacun de mes menbres . Voici le code:

    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
    21
    22
    #include <stdio.h>
    #include <string.h>
     
    typedef struct famille
    { int age;
      char surnom[20];
      char nom[20];
    }famille;
    /*-----------------------*/
    void changement(famille *m)
    { m->age=18;
      strcpy(m->surnom,"plouf");
      strcpy(m->nom,"plaf");
    }
    /*-----------------------*/
    int main(void){
     
    famille menbre1={0,"",""};
    changement(&menbre1);
    printf("Le surnom de %s est %s\n",menbre1.nom,menbre1.surnom);
    return 0;
    }
    J'ai essayé quelques tentatives qui sont resté infructueuse , je ne sais pas comment m'y prendre . Merci de votre aide .

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 964
    Points : 4 899
    Points
    4 899

    Par défaut

    Bonjour,

    Il faudrait peut-être aller plus loin pour voir ce qui te bloque. Si on utilise un tableau ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #define NB_MEMBRES 20
     
    int main(void) {
        famille  membres[NB_MEMBRES] = {{0,"",""}};
     
        for ( int i = 0 ;  i < NB_MEMBRES ;  i++ ) {
            changement(&membres[i]);
            printf("Le surnom de %s est %s\n" , membres[i].nom, membres[i].surnom);
        }
        return  0;
    }

  3. #3
    Membre à l'essai
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Merci , bien compris !
    Par contre pourquoi les doubles accolades pour l'initialisation du tableau ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2015
    Messages : 964
    Points : 4 899
    Points
    4 899

    Par défaut

    Pour initialiser une structure, on utilise une paire d'accolades (et on fournit dedans la liste des champs à affecter, il faut au moins le premier champ)
    Pour initialiser un tableau, on utilise une paire d'accolades (et on fournit dedans la liste des éléments du tableau, il faut au moins un élément)
    Pour initialiser un tableau de structures, on a donc des accolades dans des accolades. C'est facultatif, mais je pense plus explicite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Le minimum ici serait
    famille  membres[NB_MEMBRES] = {{0}};
    // Le maximum serait
    famille  membres[NB_MEMBRES] = {{1,"a","b"},{2,"a","b"},{3,"a","b"},{4,"a","b"},{5,"a","b"},{6,"a","b"},{7,"a","b"},{8,"a","b"},{9,"a","b"},{10,"a","b"},{11,"a","b"},{12,"a","b"},{13,"a","b"},{14,"a","b"},{15,"a","b"},{16,"a","b"},{17,"a","b"},{18,"a","b"},{19,"a","b"},{20,"a","b"}};

  5. #5
    Membre à l'essai
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Ok . Merci d'avoir pris le temps de me repondre .

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    7 359
    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 : 7 359
    Points : 20 966
    Points
    20 966
    Billets dans le blog
    1

    Par défaut

    Bonjour
    Citation Envoyé par chris7522 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /*-----------------------*/
    void changement(famille *m)
    { m->age=18;
      strcpy(m->surnom,"plouf");
      strcpy(m->nom,"plaf");
    }
    /*-----------------------*/
    int main(void){
    ...
    changement(&menbre1);
    }
    J'ai essayé quelques tentatives qui sont resté infructueuse , je ne sais pas comment m'y prendre .
    En tout cas, question pointeurs maintenant tu sembles bien à l'aise...
    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

  7. #7
    Membre à l'essai
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Pas complètement . J'ai retenu que le pointeur permettait par envoi d'adresse de modifier directement plusieurs variables au sein d'une meme fonction . Dans le cas contraire , on travaille sur une copie et on ne peut retourner qu'une seule valeur.
    Je cherche en vain des exercices pratiques mais je ne trouve pas grand chose malheureusement . Si vous avez des sites ,livres a me conseiller , je suis preneur .

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    7 359
    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 : 7 359
    Points : 20 966
    Points
    20 966
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par chris7522 Voir le message
    J'ai retenu que le pointeur permettait par envoi d'adresse de modifier directement plusieurs variables au sein d'une meme fonction
    Permet à une fonction de modifier une variable qui se trouve dans une autre fonction

    Citation Envoyé par chris7522 Voir le message
    Dans le cas contraire , on travaille sur une copie
    En réalité on travaille toujours sur une copie. Soit tu passes une variable à une fonction (ex int toto=5; fct(toto)) et la fonction reçoit une copie de "5" ; soit tu passes l'adresse d'une variable à une fonction (ex int toto=5; fct(&toto)) et la fonction reçoit une copie de cette adresse. Mais ça reste toujours une copie.
    Toutefois une adresse étant unique pour tout le programme, dans le second cas, fct() peut aller y taper et modifier "toto" par ricochet.

    Citation Envoyé par chris7522 Voir le message
    Je cherche en vain des exercices pratiques mais je ne trouve pas grand chose malheureusement . Si vous avez des sites ,livres a me conseiller , je suis preneur .
    Non, pas d'idée. Essaye de recoder les fonctions usuelles (strcpy, strlen, strcmp). Cela s'y prête bien car une chaine étant à la base un tableau, et un tableau ne pouvant se transmettre à une fonction que par son adresse, ça te fait rentrer direct dans le monde du pointeur...
    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

  9. #9
    Membre à l'essai
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    C'est tres claire cette fois-ci . Y a plus qu'a ..
    Merci

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

Discussions similaires

  1. utiliser un tableau dans une structure
    Par wahidred dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/04/2012, 20h27
  2. Utilisation d'un tableau dans une structure
    Par Angelique64 dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/06/2009, 11h05
  3. [Tableaux] Comment utiliser un tableau dans ce cas
    Par Equinoxe5 dans le forum Fonctions
    Réponses: 1
    Dernier message: 19/08/2007, 22h13
  4. Utiliser un tableau dans une autre frame
    Par reureu dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/08/2007, 14h23
  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