Problem avec les .INI

cs_Tidam Messages postés 124 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 16 février 2006 - 17 juin 2004 à 11:22
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 17 juin 2004 à 12:23
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 juin 2004 à 12:23
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).
0
Rejoignez-nous