Cas d'école...

cs_ClemB Messages postés 5 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 30 septembre 2003 - 26 sept. 2003 à 17:51
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 30 sept. 2003 à 18:05
Bonjour,

J'ai le soucis suivant dans le code ci après :

typedef struct {
const char *Name;
...
...
} TOTO;

bool AAA (TOTO *retour)
{
CString sTest = "Hello";
retour->Name = sTest;
return TRUE;
}

main()
{
TOTO retour;

AAA(&retour);
printf ("%s", retour.Name); //Je devrais afficher Hello
}

Pouvez vous me dire pourqoui, et la bonne façon de faire ?
Merci

Phil

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 sept. 2003 à 18:04
CString sTest, ce bidule mfc a un destructeur qui s'applique des la sortie de la fonction.
Le membre char *Name de *retour doit pointer sur une zone memoire valide.
BruNews, ciao...
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
27 sept. 2003 à 21:33
peut-etre :

bool AAA (TOTO *retour)
{
strcpy(retour->Name,"Hello");
return TRUE;
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 sept. 2003 à 21:48
strcpy NENNI, pointeur doit etre initialise par "=" pour pointer quelque part.
BruNews, ciao...
0
cs_ClemB Messages postés 5 Date d'inscription vendredi 19 septembre 2003 Statut Membre Dernière intervention 30 septembre 2003
30 sept. 2003 à 09:31
Merci, mais petite question subsidiaire :
"Le membre char *Name de *retour doit pointer sur une zone memoire valide" c'est à dire ? de quelle manière ?
Merci encore

ClemB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 sept. 2003 à 09:55
- Soit tu le pointes sur une constante:
char unNom[] = "UNNOM"; // hors de la fonction
retour->Name = unNom;
- Soit tu le 'malloc' et penser a le 'free'.
BruNews, ciao...
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
30 sept. 2003 à 18:05
je crois que c'est possible de faire :

bool AAA (TOTO *retour)
{
retour->Name = "Hello";
return TRUE;
}

mais il faut que Name soit un const char *
0
Rejoignez-nous