fonction initialisation char*
Bonjour
J'ai fait une petite fonction "petite(int *longueur,char *retour)" qui est appelée par un fonction principale "principale(void)", or petite initialise correctement retour mais principal me dit que retour est nulle, savez vous comment resoudre ce problème?
merci d'avance
Code:
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
|
void petite(int *longueur,char *retour) {
*longueur = 6;
retour = new char[*longueur+1];
if (retour) {
memset(retour,0,*longueur);
strcpy(retour,"petite");
}
// à ce stade retour="petite\0" et son adresse mémoire est par exemple 0x003b486e
}
void principale(void) {
char *tmp_retour=NULL;
int tmp_longueur=0;
petite(&tmp_longueur,tmp_retour);
if (longueur>0) {
printf("longueur:%d\n",longueur);
if (tmp_retour) {
printf("%s\n",tmp_retour);
}
else
printf("tmp_retour est nulle\n");
}
else
printf("longueur est negative ou nulle\n");
} |
Ca m'incrit à l'écran,
Citation:
longueur:6
tmp_retour est nulle