L'erreur de segmentation était à mon avis plutôt dûe au fait qu'il fallait écrire :
char *dst = (char *) malloc(sizeof(char)*strlen(src));
Si ton my_strcpy retourne le char *, rien ne t'empêche de faire le free dessus à l'extérieur.
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
char*
my_strcpy (char* dest, const char* src) {
int i;
dest = (char *) malloc(sizeof(char)*strlen(src));
for (i = 0; src[i]!='\0'; ++i) dest[i] = src[i];
dest[i] = '\0';
return dest;
}
int main(){
char *src = "tapir",dst;
my_strcpy(dst,src);
printf("dst = %s\n",dst);
free(dst);
getchar(); // pour les windowsiens
return 0;
}
Je n'ai pas testé mais ça doit marcher ça, non ?


