Code postal utilisant des structures

J’essaie de créer une structure qui stocke les codes postaux, mais le message d’erreur suivant s’affiche: “c: 15: 11: erreur: affectation à une expression de type tableau h-> array = malloc (sizeof (code postal) * taille);”

#include  #include  typedef struct PostalCode { int size; char *array[5]; } PostalCode; void main() { int size = 5; PostalCode *h = malloc(sizeof(PostalCode)); h->size = size; h->array = malloc(sizeof(PostalCode)*size); } 

La structure contient déjà un tableau de 5 pointeurs en tant que membre de données.

 typedef struct PostalCode { int size; char *array[5]; ^^^^^^^^^^^^^^ } 

Donc, vous n’avez pas besoin de l’allouer.

Si vous souhaitez utiliser ce tableau pour stocker, par exemple, 5 objects de type PostalCode (bien que dans ce cas, il serait préférable que le tableau ait le type PostalCode *array[5] ), vous pouvez écrire

 for ( int i = 0; i < 5; i++ ) { h->array[i] = malloc( sizeof( PostalCode ) ); } 

Vous n’avez pas besoin d’allouer un array , c’est un tableau, pas un pointeur. Mais vous devez allouer de la mémoire pour chaque élément.

 for (int i = 0; i < 5; i++) { h->array[i] = malloc(size); }