Définition d'une structure en c

Fermé
ahmaouche Messages postés 4 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 28 mars 2015 - 12 mars 2015 à 00:05
ahmaouche Messages postés 4 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 28 mars 2015 - 13 mars 2015 à 20:12
Bonsoir,
Je veux définir une structure (ou des structures) pour manipuler ce qui suit:
Un tableau (dynamique qui contiendra un mot en français son synonyme en anglais, en plus d'un pointeur vers une liste qui contiendra la signification du mot en français qui sera constitué d'un ensemble de mot(chaque mot dans un maillon).
j'ai pensé a faire comme suit:

struct cellule { /* déclaration de la liste*/
char mot [30];
struct cellule *suiv;

};
/**************************************************************/
struct signif {
char mot_fr[20];
char syno_eng [20];
struct cellule *liste_mot;
};
struct signif traducteur[1000]; /*declaration d'un tableau de structure de type signif*/

Est ce que c'est juste ? Y a-t-il d'autre solution?
Merci d'avance.

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 mars 2015 à 22:54
Tu parles de tableaux dynamiques mais tu n'en utilises pas.
Il faut mettre des pointeurs à la place des char mot[30] et cie.
Sinon, ça sera statique.
0
ahmaouche Messages postés 4 Date d'inscription jeudi 5 mars 2015 Statut Membre Dernière intervention 28 mars 2015
13 mars 2015 à 20:12
Pour faire l'allocation dynamique j'ai utilisé la fonction malloc comme suit

/********Allocation dynamique*******************************/
struct cellule {
char* mot;
struct cellule *suiv;
};
/********************************************************/
struct signif {
char* mot_fr;
char* syno_eng;
struct cellule* liste_mot;
};

typedef struct signif signif;
signif* traducteur ;
traducteur = malloc(sizeof(signif));

int main()
{
printf("Hello world!\n");
return 0;
}


Mais après la compilation j'ai les erreur suivantes:

C:\CodeBlocks\structuretp\main.c|28|note: previous declaration of 'traducteur' was here|
C:\CodeBlocks\structuretp\main.c|29|warning: initialization makes integer from pointer without a cast [enabled by default]|
C:\CodeBlocks\structuretp\main.c|29|error: initializer element is not constant|

Cordialement.
0