Pages : 1
#1 Le 19/06/2019, à 16:22
- chris7522
Structure de structure (C)
Bonjour a toutes et a tous ,
Je ne comprends pas 2 choses :
Pourquoi la declaration de ma 1ere structure se trouve dans la seconde ( ainsi une structure peu devenir une variable dans une autre structure ?)
Quel est le role de la fonction strcpy dans le code ?
Merci de votre aide précieuse .
#include <stdio.h>
#include <string.h>
int main()
{
struct date
{
int month;
int day;
int year;
};
struct human
{
char name[45];
struct date birthday;
};
struct human president;
strcpy(president.name,"George Washington");
president.birthday.month = 2;
president.birthday.day = 22;
president.birthday.year = 1732;
printf("%s was born on %d/%d/%d\n",
president.name,
president.birthday.month,
president.birthday.day,
president.birthday.year);
return(0);
}
Hors ligne
#2 Le 19/06/2019, à 16:35
- Zakhar
Re : Structure de structure (C)
Oui, bien sûr une structure peut contenir tout autre élément, dont une autre structure.
man strcpy
Comme son nom l'indique, ça copie une chaîne. (str = string = chaîne en anglais), et cpy comme copy.
En l'occurrence ce qui est fait là est une très mauvaise pratique, on devrait plutôt avoir :
strncpy(president.name,"George Washington", sizeof(president.name));
puis
printf("%.*s", sizeof(president.name),president.name);
... histoire d'éviter les débordements mémoire si toutefois la zone réceptrice était trop petite.
Alternativement, on peut forcer un zéro binaire en dernière position de president.name pour être sûr que la chaîne est terminée, et conserver le printf en l'état.
Eviter les "débordement" mémoire est l'essentiel en C si on ne veut pas avoir des trucs qui sont tout de suite hors de contrôle !..
Dernière modification par Zakhar (Le 19/06/2019, à 16:42)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#3 Le 19/06/2019, à 16:38
- pingouinux
Re : Structure de structure (C)
Bonjour,
Pourquoi la declaration de ma 1ere structure se trouve dans la seconde ( ainsi une structure peu devenir une variable dans une autre structure ?)
Une structure est un type de variable comme un autre, construit à partir des types de base.
Quel est le role de la fonction strcpy dans le code ?
Le premier réflexe doit être de faire
man strcpy
Hors ligne
#4 Le 19/06/2019, à 21:39
- chris7522
Re : Structure de structure (C)
Merci a tous les deux de votre aide
Hors ligne
Pages : 1