1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| char *my_strcpy(char *dest, char const *src)
{
while( *src != '\0' )
{
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
char *str_realloc_cpy(
char *s1, /*[in/free/opt] Pointeur vers une chaîne allouée sur le tas, ou NULL.*/
char const *s2 /*[in] Chaîne à écrire */
)
{
size_t cchNouvelleTaille = LongueurChaine(s2)+1;
size_t cbNouvelleTaille = cchNouvelleTaille * sizeof *s1;
/*Note: si ça ne compile pas sans le cast, c'est que tu compiles en C++.*/
char *RetourRealloc = realloc( s1, cbNouvelleTaille );
if ( RetourRealloc != NULL )
{
s1 = RetourRealloc;
my_strcpy(s1, s2);
}
else
{
int err = errno;
perror("\n > Erreur d'allocation m\202moire dans la fonction str_realloc_cpy ");
printf("\n > Code erreur associ\202 : %d\n", err );
}
return NULL; /*On suit le même comportement que realloc()*/
} |