Menu

Initialisation d'une structure [Résolu]

Messages postés
7
Date d'inscription
lundi 31 décembre 2018
Dernière intervention
9 janvier 2019
-

comment initialiser cette structure avec ces données
Et merci
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
4876
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
23 janvier 2019
930
1
Merci
Salut SalimRT,

Je suppose qu' "un type enregistrement Personne" se réfère sûrement à un type créé par le programme avec un typedef sur un struct comprenant les membres de différents types mentionnés.

Tu as des exemples là : https://www.tutorialspoint.com/cprogramming/c_typedef.htm

Note que ce tutoriel n'utilise pas de typedef, donc la variable est déclarée
struct Books Book1;
avant d'être utilisée. J'imagine que dans ton cas, tu auras déclaré un typedef Personne qui sera un alias sur ta struct, et que dans ton cas la déclaration serait du type
Personne une_personne;
pour déclarer ta personne.

Ensuite, l'initialisation suit les mêmes principes, car typedef ne fait que créer un alias sur la struct.

Dal

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 58082 internautes nous ont dit merci ce mois-ci

SalimRT
Messages postés
7
Date d'inscription
lundi 31 décembre 2018
Dernière intervention
9 janvier 2019
-
Merci Dal
mais est-ce qu'il y a des moments que je dois travailler avec struct ou typedefstruct? et qui est la plus simple et utiliser ?
[Dal]
Messages postés
4876
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
23 janvier 2019
930 -
tu soulèves une question intéressante

quand tu écris :

struct book {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
};

tu peux déclarer une variable
struct
comme cela :
struct book bibliotheque[100];
. En lisant cette déclaration, je sais que je déclare un tableau de 100
struct
, et que la
struct
"book" a des membres.

typedef
permet de créer un alias sur un type, une
struct
ou autre chose, en créant un identifiant pour un type non standard.

Par exemple, avant la révision du C99 introduisant le type standard
bool
dans le langage C (https://en.cppreference.com/w/c/types/boolean), le type booléen était simulé par certains programmeurs avec un
typedef
sur un
enum
, par exemple :
typedef enum boolean { FALSE, TRUE} bool_t;
...

Lorsque tu vois dans un code :
truc machin;
, tu sais juste que tu déclares un
machin
, avec un type non standard
truc
qui a dû être définit quelque part avec un
typedef
(ou même un
#define
, et là on frise l'horrible) et qui peut être, en fait, de n'importe quel type (un
enum
comme ici, une
struct
, un
int
, un pointeur sur
char
,...). L'information est masquée.

C'est un choix du programmeur que de masquer, ou non, cette information. Parfois, c'est utile pour créer des types opaques, où le programmeur n'a pas besoin de savoir exactement les détails de l'implémentation (par exemple, dans la bibliothèque standard du C, le type
FILE
), parce que tous ces détails sont gérés par la bibliothèque et que le programmeur n'a pas à s'en soucier (en fait on ne veut pas qu'il y mette son nez pour ne pas interférer avec l'implémentation).

Dans le cas de struct, à mon sens, cela ne se justifie pas... mais c'est une affaire de style.

Certains n'aiment pas du tout les
typedef
, par exemple ils sont très mal vus par les contributeurs au noyau Linux (Linux kernel coding style : https://www.kernel.org/doc/html/v4.11/process/coding-style.html)

D'autres les aiment bien, et ils peuvent être pratiques pour éviter d'avoir des types longs à taper.

En ce qui te concerne, si l'exercice te demande de le créer, fais le :-)

Et dans la vraie vie, si tu programmes seul, tu fais tes propres choix, si tu programmes sur un projet existant, tu adaptes ton style au style du projet (ou tu le définis en concertation avec les autres contributeurs si tu arrives suffisamment en amont).
Commenter la réponse de [Dal]