Renvoi de type char[] d'une fonction

cs_sbouli Messages postés 8 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 octobre 2007 - 23 déc. 2003 à 18:02
cs_sbouli Messages postés 8 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 octobre 2007 - 23 déc. 2003 à 19:17
Bonjour,

Je suis ULTRA débutant et je cherche à faire une fonction renvoyant du char, voila le principe :

char lectureIni (char section[], char clef[], char fichier[])
{
//GetPrivateProfileString("OPTIONS","chemin",NULL,chemin,sizeof(chemin),".\\TEST.INI");
char temp[100];
GetPrivateProfileString(section,clef,NULL,temp,sizeof(temp),fichier);
return temp;
}

Le problèmes est que temp est de taille 100 alors que le return n'est qu'un char pas un tableau de char mais

char[100] lectureIni(char ....

ne passe pas !

et impossible de trouver des fonctions renvoyant des strings ...

Je voulais éviter l'utilisation de variables globales pour ça.

Merci pour votre aide

Stéphane

7 réponses

hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
23 déc. 2003 à 18:18
il faut utiliser un pointeur

(programme principal)
char *maChaine = lectureIni(...);

(methode lectureIni)
char * lectureIni (char section[], char clef[], char fichier[])
{
char * temp = new char[100];
....

return temp;
}

(ne pas oublier en fin de programme de faire :
delete maChaine;
0
cs_sbouli Messages postés 8 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 octobre 2007
23 déc. 2003 à 18:29
Merci, en fait j'ai fait ça :

char * lectureIni (char section[], char clef[], char fichier[])
{
//GetPrivateProfileString("OPTIONS","chemin",NULL,chemin,sizeof(chemin),".\\TEST.INI");
char * temp = new char[100];
GetPrivateProfileString(section,clef,NULL,temp,sizeof(temp),fichier);
return temp;
}

et dans le programme principal :

SetDlgItemText(hWnd,IDC_CHEMIN, lectureIni("OPTIONS","chemin",".\\TEST.INI"));

Le fichier ini contient :
[OPTIONS]
chemin=http://www.domaine.com/toto.cfm

mais lorsque je fais tourner le soft, il me renvoi : "htt"
dans la boite d'edition et pas : "http://www.domaine.com/toto.cfm"

il est où le bleme ??

Stéphane
0
cs_sbouli Messages postés 8 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 octobre 2007
23 déc. 2003 à 18:31
la ligne : //GetPrivateProfileString("OPTIONS","chemin",NULL,chemin,sizeof(chemin),".\\TEST.INI");

est un résidu en commentaire, désolé.

Stéphane
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
23 déc. 2003 à 18:46
parce qu'il faut que tu mettes la taille de ton buffer à la place de sizeof(temp) qui lui te donne le nombre d'octets utilisés pour coder un char
0

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

Posez votre question
cs_sbouli Messages postés 8 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 octobre 2007
23 déc. 2003 à 19:01
euuuuu ok,
c'est quoi la fonction qui renvoi la taille du buffer ? :blush)
Stéphane
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
23 déc. 2003 à 19:13
char * temp = new char[100];

ca, c'est ton buffer, c'est toi qui en a determiné la taille
0
cs_sbouli Messages postés 8 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 octobre 2007
23 déc. 2003 à 19:17
Effectivement

Merci
0
Rejoignez-nous