Contenu | Rechercher | Menus

Annonce

La nouvelle clé USB Ubuntu-fr est en prévente
Rendez-vous sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/09/2019, à 12: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, à 13: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, à 17: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 smile

Hors ligne

#4 Le 01/09/2019, à 17: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, à 18: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, à 18: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, à 19:54

chris7522

Re : utilisation d'un tableau dans cette structure

Cette fois-ci plus de zone d'ombre smile

Hors ligne