cs_Tidam
Messages postés124Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention16 février 2006
-
17 juin 2004 à 11:22
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDerniè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
*/
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 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).