Problem avec les .INI

Signaler
Messages postés
124
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
16 février 2006
-
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
-
voila je debute en c++ et je commence a me servir des .ini
j'utilise les WritePrivateProfileString , GetPrivateProfileString , etc... de windows.h mais lorsque que j'essaye de lire une clé il me sort seulement les 3 premiers caractere de la clé...

exemple
/* j'utilise
void openini(char * section , char * cle , char* valeur , char* repertoire)
{
GetPrivateProfileString(section,cle,"retourne ça si erreur",valeur,sizeof(valeur),repertoire);
}
*/
char valeur[256];
openini("CONFIG","n2",valeur,repertoire);
cout >> valeur >>endl;
/*ca va me sortir sal
alors que dans le .ini
la clé n2=salut
*/

1 réponse

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
le pb vient du sizeof(valeur).

cette méthode permet d'obtenir la taille d'une chaîne seulement si valeur est un tableau static declaré comme ceci :
char valeur[256];
> sizeof(valeur) 256

maintenant, si tu passe ton tableau en paramètre à une fonction par l'intermédiaire d'un char* (totalement correct), dans le corps de la fonction, valeur n'est plus un tableau de 256 caractères mais simplement un pointeur sur le premier caractère du tableau
> sizeof(valeur) 4
tu ne récupère donc que 3 caractère + le nul de terminaison

il faut que tu passe en paramètre la taille de la chaîne car la fct openini 'a aucun autre moyen moyen de le connaître à partir du char* (c'est d'ailleurs pour la meme raison que la fct API WritePrivateProfileString te demande cette taille).