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 : Sélectionner tout - Visualiser dans une fenêtre à part
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,
longueur:6
tmp_retour est nulle