Forum Programmation.c tableau,structure,pointeur.

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
1
sept.
2019

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:

#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é de le faire avec un tableau mais evidement ,j'en suis loin et ca ne fonctionne pas du tout :

#include <stdio.h>
#include <string.h>

typedef struct famille
{ int age;
  char surnom[20];
  char nom[20];
}famille;
/*-----------------------*/
void changement(*m)
{ m->age=18;
  strcpy(m->surnom,"plouf");
  strcpy(m->nom,"plaf");
}
/*-----------------------*/
int main(void){
famille menbre[1];

strcpy(menbre[0].surnom,"pif");
changement(menbre);
printf("Le surnom de %s est %s\n",menbre[0].nom,menbre[0].surnom);
return 0;
}

Je ne sais pas du tout comment m'y prendre . Merci de votre aide
```

  • # Introspection

    Posté par  . Évalué à -2.

    Salut :)

    Ça s'appelle de l'introspection.

    Bonnes recherches, en C je connais pas trop.

  • # Quel est le problème ?

    Posté par  . Évalué à 1. Dernière modification le 01/09/19 à 14:07.

    Quel est ton problème exactement, car juste dire que ça ne marche pas n'est pas suffisamment.
    À part la signature de la fonction changement qui est incomplète, ton deuxième exemple semble bon.

  • # pointer sur un membre du tableau

    Posté par  (site Web personnel) . Évalué à 5.

    Il suffit de pointer sur un membre du tableau:

    #include <stdio.h>
    #include <string.h>
    
    #define MAX_RESERVE_NOM 21
    #define MAX_NOM (MAX_RESERVE_NOM - 1)
    #define FAMILLE_SIZE 10
    struct famille
    { 
        int age;
        char surnom[MAX_RESERVE_NOM];
        char nom[MAX_RESERVE_NOM];
    };
    
    /* pour le confort */
    typedef struct famille* familleptr;
    
    /*-----------------------*/
    void changement(familleptr m)
    { 
        m->age=18;
        /* strncpy: pour ne pas deborder */
        strncpy(m->surnom,"plouf6789ABCDEFGHIJKZZZZ",MAX_NOM);
        strncpy(m->nom,"plaf",MAX_NOM);
    }
    /*-----------------------*/
    
    int main(void)
    {
        struct famille membre[FAMILLE_SIZE]={ 
            {10,"pif","paf"},
            {11,"dede","lulu"},
            {12,"",""},
            {13,"",""},
            {14,"",""},
            {15,"",""},
            {16,"",""},
            {17,"",""},
            {18,"",""},
            {19,"",""}
        };
    
        strncpy(membre[2].surnom,"pof",MAX_NOM);
        changement(&membre[3]);
    
        for(size_t i=0;i<FAMILLE_SIZE;++i){
            printf("Le surnom de %s, agé de %d années, est %s\n",membre[i].nom,membre[i].age,membre[i].surnom);
        }
        return 0;
    }

    «membre», avec un «m» avant le «b»

  • # Ma contribution

    Posté par  (site Web personnel) . Évalué à 3.

    menbre -> membre

    Voilà, je ne saurais t'aider davantage, bon courage ;)

    Un LUG en Lorraine : https://enunclic-cappel.fr

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.