Probleme en structure
stephen
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je commence en language c et j ai un programme a faire
d affecter la variable menurapide de type menu au menu suivant
entree = nuggets
platprincipal= rapidburger-frites;
dessert=glace;
prix= 10;
mais quand je fait le programme ca fait erreur
voici le programme
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct
{
char viandeoupoisson[20];
char accompagnement[20];
}plat;
typedef struct menu
{
char entree[20];
plat platprincipal;
char dessert[20];
float prix;
}menu;
int main(void)
{
struct menu *menurapide;
menurapide=malloc(sizeof(struct menu));
menurapide->entree = {'nuggets'};
//menurapide->platprincipal= rapidburger-frites;
//menurapide->dessert=glace;
menurapide->prix= 10;
}
d affecter la variable menurapide de type menu au menu suivant
entree = nuggets
platprincipal= rapidburger-frites;
dessert=glace;
prix= 10;
mais quand je fait le programme ca fait erreur
voici le programme
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct
{
char viandeoupoisson[20];
char accompagnement[20];
}plat;
typedef struct menu
{
char entree[20];
plat platprincipal;
char dessert[20];
float prix;
}menu;
int main(void)
{
struct menu *menurapide;
menurapide=malloc(sizeof(struct menu));
menurapide->entree = {'nuggets'};
//menurapide->platprincipal= rapidburger-frites;
//menurapide->dessert=glace;
menurapide->prix= 10;
}
Configuration: Windows Vista Firefox 3.5.7
7 réponses
-
Bonjour,
En gras ce qui ne va pas, il y aura peut etre encore quelques erreurs!#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct plat { char viandeoupoisson[20]; char accompagnement[20]; }plat; typedef struct menu { char entree[20]; plat platprincipal; char dessert[20]; float prix; }menu; int main(void) { menu *menurapide; // maitenant tu as creer le type "menu" donc tu l'utilises comme un autre type menurapide=(*menu)malloc(sizeof(menu)); // pareil, et tu caste en (menu*) ce n'est pas obligatoire menurapide->entree = 'nuggets'; //menurapide->platprincipal= 'rapidburger-frites'; //menurapide->dessert=glace; menurapide->prix= 10; } -
Re,
Le cast est implicite je suis d'accord mais il est conseillé de le faire. En gros, fais comme dis Pacorabanix pour ne pas t'embrouiller.
Normalement menurapide->entree = 'nuggets';
devrais fonctionner sans problème :) -
Oui tu peux faire ça, ou sinon tu peux enlever le caste sur la 2ème ligne :
int main(void)
{
struct menu *menurapide;
menurapide = malloc(sizeof(menu));
menurapide->entree ="nuggets";
//menurapide->platprincipal= rapidburger-frites;
//menurapide->dessert=glace;
menurapide->prix= 10;
}
met plutot des double quote sur la ligne "nuggets", les simples quote étant souvent pour un seul caractère. -
euh je sais pas.. et si tu mets :
menurapide->entree ='nuggets'; ? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
pour assigner une chaine de caractère il faut utiliser strcpy(destination, source) :
int main(void) { menu* menurapide = malloc(sizeof(menu)); strcpy(menurapide->entree, "nuggets"); menurapide->prix= 10; printf("entree : %s prix = %f", menurapide->entree, menurapide->prix); getch(); }
ça marche bien là ;)-
non ca dit
'strcpy' non défini(e) ; extern retournant int pris par défaut
1>c:\users\stephen\documents\visual studio 2008\projects\adn.c(42) : warning C4013: 'getch' non défini(e) ; extern retournant int pris par défaut#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct plat { char viandeoupoisson[20]; char accompagnement[20]; }plat; typedef struct menu { char entree[20]; plat platprincipal; char dessert[20]; float prix; } menu; int main(void) { menu* menurapide = malloc(sizeof(menu)); strcpy(menurapide->entree, "nuggets"); menurapide->prix= 10; printf("entree : %s prix = %f", menurapide->entree, menurapide->prix); getch(); }
ceci compile chez moi.- menurapide->platprincipal= rapidburger-frites;
ceci ne veut rien dire du point de vue syntaxe C++.
Reprenons : Qu'est ce que "platprincipal" ? Une variable de type "plat".
Comme plat est une struct :typedef struct plat { char viandeoupoisson[20]; char accompagnement[20]; }plat;
il faut donner deux chaines pour ton plat
ex :strcpy(tonPlat.viandeoupoisson, "Hamburger");
qu'est-ce que "tonPlat" dans ce cas ?
c'est menurapide->platprincipal
ainsi la ligne :strcpy(menurapide->platprincipal.viandeoupoisson, "Hamburger");
serait plutot un truc dans le genre que ce que tu voudrais faire. - d'atre part, j'aimerais faire une remarque. Il n'y a pas besoin de malloc dans ton programme.
au lieu demenu * variable; variable= malloc (...) ... variable->entree ... ... variable->platprincipale ...
tu aurais pu faire tout simplement :
menu variable; ... variable.entree ... ... variable.platprincipale ...
Pas besoin de créer "dynamiquement" ta structure ici, avec un pointeur et tout ça.
-
-
oui merci ca fait
maintennt je demande si mon proff a pas fait une erreur car
plat platprincipal; na pas valeur char ou int
si c est pas une erreur comment affecter la valeur rapidburger-frutes ?
j ai fait cela mais ca dit erreu