Bonjour,

je rencontre le problème suivant :

je déclare une chaîne de caractères avec un malloc comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
#define HISC_NameLg 17
 
struct SMenuGen
{
   .............
   char *pTmpScName;
   ............
};
struct SMenuGen gMenu;
 
void mafonction(void)
{
 u32 nLgName = 0;
 
 gMenu.pTmpScName = malloc(HISC_NameLg * sizeof(*gMenu.pTmpScName));
 
/*Puis je fais un strlen pour avoir la taille*/
 
 nLgName = strlen(gMenu.pTmpScName);
 
}
Donc le problème est que si je regarde la taille de ma chaîne avec un printf :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
printf("nLgName = %d\n", nLgName);
J'obtient la valeur 3. Et si je fait maintenant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
printf("sizeof(*gMenu.pTmpScName) = %d\n", sizeof(*gMenu.pTmpScName));
La j'ai bien la taille désiré c'est à dire 17.

Donc je ne comprend pas pourquoi strlen ne me donne pas la bonne taille.