string dans un struc : allocation de mémoire ?
Bonjour,
je sature apres avoir trouvé un formidable bug.
J'ai un struct, disons :
Code:
1 2 3 4
| typedef struct {
char string1[3];
char string2[3];
} enzyme; |
Plus loins mon code je crée un tableau d'enzymes (avec malloc). Disons enzymes.
Plus loins dans mon code, j'affecte des caractères à chacuns de mes strings (un par un) de chacuns des éléments enzyme de mon tableau enzymes.
Je termine par un '\0' à la 3ème position. Normal.
Ce qui est moin normal c'est que mes string1 commencent sytématiquement par un \0.
En cherchant j'ai découvert que les 2 strings étaient contigues en mémoire !!! (normal me dira un habitué...). Du coup le '\0' de string2 correspond à l'index 0 de string1.
J'en conclu ma bêtise et qu'il faut donc que je fasse un malloc (voire calloc) à la création de mes struct mais je vois pas comment faire dans cette ligne :
Code:
enzymes = (enzyme*) malloc (enzyme_numb*sizeof(enzyme));
J'ai une limitation de mon cerveau.
J'aurais voulu faire :
Code:
1 2 3 4
| typedef struct {
char* string1 = calloc(3*sizeof(char);
char* string2 = calloc(3*sizeof(char);
} enzyme; |
Pouvez-vous m'éclairer!! :roll:
Merci d'avance, yann