Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Initialisation structure

3 réponses
Avatar
Tibo-
Bonjour,

Est ce que ceci est correcte ?

typedef struct car {
char *name, *model, *vitesse;
} voiture;

static voiture gamme[]= {"zx","xv35","180kmh","2cv","jnioj","pas
beaucoup"};


Merci.

--
Tibo-

3 réponses

Avatar
kilobug

Bonjour,


Bonjour

Est ce que ceci est correcte ?


typedef struct car {
char *name, *model, *vitesse;
} voiture;


static voiture gamme[]= {"zx","xv35","180kmh","2cv","jnioj","pas
beaucoup"};


Non, tu as un tableau de structures, pas une strcture à 6 membres (ou
un tableau à 6 membres), tu dois utiliser la syntaxe suivante:

static voiture gamme[]= { {"zx","xv35","180kmh"},
{"2cv","jnioj","pas beaucoup"} };

Et je tiens à rappeler que les chaînes écrites "en dur" dans le
fichier .c sont bien souvent en lecture seule, si tu penses devoir les
modifier, alors tu dois les recopier dans une zone de mémoire que tu
peux modifier (malloc, ou des données sur la pile). Si tu ne comptes
pas les modifier, const char * serait plus clair sur ton intention ;)

--
Gael Le Mignot "Kilobug" - - http://kilobug.free.fr
GSM : 06.71.47.18.22 (in France) ICQ UIN : 7299959
Fingerprint : 1F2C 9804 7505 79DF 95E6 7323 B66B F67B 7103 C5DA

Member of HurdFr: http://hurdfr.org - The GNU Hurd: http://hurd.gnu.org

Avatar
Tibo-
"Gaël Le Mignot" wrote:


Bonjour,


Bonjour

Est ce que ceci est correcte ?

typedef struct car {
char *name, *model, *vitesse;
} voiture;

static voiture gamme[]= {"zx","xv35","180kmh","2cv","jnioj","pas
beaucoup"};


Non, tu as un tableau de structures, pas une strcture à 6 membres (ou
un tableau à 6 membres), tu dois utiliser la syntaxe suivante:

static voiture gamme[]= { {"zx","xv35","180kmh"},
{"2cv","jnioj","pas beaucoup"} };



Bien vu. D'allieurs je suis bete, mon compilateur me l'avais dit ;-)

Et je tiens à rappeler que les chaînes écrites "en dur" dans le
fichier .c sont bien souvent en lecture seule, si tu penses devoir les
modifier, alors tu dois les recopier dans une zone de mémoire que tu
peux modifier (malloc, ou des données sur la pile). Si tu ne comptes
pas les modifier, const char * serait plus clair sur ton intention ;)



C'est bien de la lecture seule, je vais donc mettre const.

Merci pour la reponse.

--
Tibo-


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Tibo- wrote:

Est ce que ceci est correcte ?

typedef struct car {
char *name, *model, *vitesse;
} voiture;

static voiture gamme[]= {"zx","xv35","180kmh","2cv","jnioj","pas
beaucoup"};


Non, il manque des accolades :

static voiture gamme[]=
{
{"zx" , "xv35" , "180kmh"},
{"2cv" , "jnioj", "pas beaucoup"}
};

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/