Probleme en structure
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; }-
-
@stephenah ca me dit qu il y a des erreurs
menurapide=(*menu)malloc(sizeof(menu));
ecriture pas conforme -
-
@Pacorabanixeu pas compris ce que tu voulais m expliquer enfaite ou j avais le blem c etais avec
menurapide->entree = 'nuggets';
reexplique stp
-
-
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'; ? -
je vois pas désolé :s
-
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à ;)-
-
@stephen
#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. -
@PacorabanixOui 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 menurapide->platprincipal= rapidburger-frites;
mais ca dit erreu -
@Pacorabanixmenurapide->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. -
@Pacorabanixd'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