#1 Le 01/09/2019, à 11:15
- chris7522
utilisation d'un 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:
#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 .
Hors ligne
#2 Le 01/09/2019, à 12:20
- pingouinux
Re : utilisation d'un tableau dans cette structure
Bonjour,
Voici une façon de faire :
#include <stdio.h>
#include <string.h>
typedef struct famille
{ int age;
char surnom[20];
char nom[20];
}famille;
famille familles[10];
/*-----------------------*/
void changement(famille *m, int age, char*surnom, char*nom)
{ m->age=age;
strcpy(m->surnom,surnom);
strcpy(m->nom,nom);
}
/*-----------------------*/
int main(void){
char surnom[20];
char nom[20];
for (int i=0; i<5; i++) {
sprintf(surnom,"surnom_%d",i);
sprintf(nom,"nom_%d",i);
changement(familles+i,i+5,surnom,nom);
printf("Le surnom de %s est %s (age=%d)\n",familles[i].nom,familles[i].surnom,familles[i].age);
}
return 0;
}
Hors ligne
#3 Le 01/09/2019, à 16:03
- chris7522
Re : utilisation d'un tableau dans cette structure
Merci de ta reponse . Je ne saisis pas tout ,car pour le moment ,un peu trop complexe au regard de mes connaissances . merci d'avoir prit le temps de me repondre
Hors ligne
#4 Le 01/09/2019, à 16:10
- pingouinux
Re : utilisation d'un tableau dans cette structure
Tu déclares le tableau ici, en te servant du typedef famille que tu viens de définir :
famille familles[10];
C'est analogue à une déclaration de tableau d'entiers, par exemple :
int tablo[10];
Hors ligne
#5 Le 01/09/2019, à 17:34
- chris7522
Re : utilisation d'un tableau dans cette structure
Ok bien compris . La declaration du tableau dans ton exemple ne me posait pas de soucis de compréhension . Par contre l'utilisation de la fonction sprintf est un peu plus obscure pour moi .
je ne comprends pas non plus l'appel de la fonction : changement(familles+i,i+5,surnom,nom); notamment l'argument familles+i .
Hors ligne
#6 Le 01/09/2019, à 17:53
- pingouinux
Re : utilisation d'un tableau dans cette structure
Par contre l'utilisation de la fonction sprintf est un peu plus obscure pour moi .
sprintf permet d'écrire dans une chaîne de caractères (ici pour générer des noms et surnoms dépendant de l'indice de l'élément du tableau).
je ne comprends pas non plus l'appel de la fonction : changement(familles+i,i+5,surnom,nom); notamment l'argument familles+i .
La fonction changement permet ainsi de modifier l'âge, le surnom et le nom.
familles+i est équivalent à &familles[ i].
Hors ligne
#7 Le 01/09/2019, à 18:54
- chris7522
Re : utilisation d'un tableau dans cette structure
Cette fois-ci plus de zone d'ombre
Hors ligne