
Envoyé par
nanosoft
OK, je n'avais encore jamais vu strdup , mais avec strcpy cela revient au même ? (vers un pointeur alloué et avec const char *chaine)
En l’occurrence le pointeur est celui de ma structure et je veux en modifier la chaine.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| char * strdup (const char * s_str)
{
char * s = NULL;
if (s_str)
{
s = malloc (strlen (s_str) + 1);
if (s)
strcpy (s, s_str);
}
return s;
} |
ta_structure->ta_chaine = strdup ("une chaine");

Envoyé par
nanosoft
Je trouve bizarre que l'on puisse réserver de la mémoire pour une structure alors qu'on ne connait pas la taille de ses membres.
Mais bon le C est tout sauf intuitif

Disons que la taille de la chaîne on s’en fout car ce n'est qu'un pointeur qui pointera vers une autre zone de la mémoire lorsque l'allocation sera fait par la suite. Sinon la taille de la structure sera égale à la somme de la taille de ses membres, ça c'est suivant l'implémentation de l'OS sur lequel tu travailles mais dans la plupart des cas un pointeur vaut 4 octets si je ne me trompe pas, l'opérateur sizeof (ton_pointeur); devrait te donner le résultat correct.

Envoyé par
nanosoft
Merci Franck pour le module, mais le source n'est pas donné ?
Bin si il est livré, c'est une archive contenant tous les fichiers ici présent: http://sourceforge.net/p/cstr/code/4/tree/ mais bien entendu, il faut que je retravaille tout ca, ce code date un peu, j'était un peu moins expérimenté par rapport à maintenant
Partager