[c] Structure et allocation de mémoire dynamique

Structure et allocation de mémoire dynamique [c] - Programmation

Marsh Posté le 16-07-2002 à 22:04:16    

j'ai une structure toute simple
 
struct machin{
      char nom[30];
      ...
} mac
 
et je voudrais utiliser malloc mais lorsque je fais soit dans la structure :
char* nom = (char*)malloc(30 * sizeof(char));
 
ou en dehors de la structure :
mac.nom = (char*)malloc(30 * sizeof(char));
 
il mejette. Une idée?
 
CHaiCA
 

Reply

Marsh Posté le 16-07-2002 à 22:04:16   

Reply

Marsh Posté le 16-07-2002 à 22:06:48    

tableau alloué statiquement => pas besoin de malloc
 
sinon a l'avenir c plus simple si tu donne l'erreur de compilation renvoyée.....

Reply

Marsh Posté le 16-07-2002 à 22:08:44    

Non mais justement je ne veux plus qu'il soit alloué statiquement. Je veux virer le [30]
 
CHaiCA


Message édité par chaica le 16-07-2002 à 22:09:11
Reply

Marsh Posté le 16-07-2002 à 22:09:43    

Tu fais soit:

Code :
  1. struct machin{
  2.      char* nom;
  3.      ...
  4. } mac;
  5. mac.nom = (char*)malloc(30 * sizeof(char));


 
soit

Code :
  1. struct machin{
  2.      char nom[30];
  3.      ...
  4. } *mac;
  5. mac = (struct machin *) malloc(sizeof(struct machin));


Reply

Marsh Posté le 16-07-2002 à 22:25:37    

ca devrait marcher ca :
mac.nom = (char*)malloc(30 * sizeof(char));
avec la struct machin{
char *nom;
...
}mac;

Reply

Marsh Posté le 16-07-2002 à 22:29:25    

Verdoux : j'avais deja essayé ta 1ere solution et ca ne marchait pas. Bizarrement j'ai déplacé la déclaration d'un fichier (je l'ai mise juste après la structure) et la compilation est passée.
 
CHaiCA

Reply

Marsh Posté le 16-07-2002 à 23:07:32    

Une petite remarque : nom[30] est une chaîne de caractères ne pouvant comporter que 29 caractères plus '\0' en position 29.
enfin c'est au cas où.  :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed