Caractere dans structure après lecture fichier Ini

Signaler
Messages postés
30
Date d'inscription
jeudi 13 octobre 2005
Statut
Membre
Dernière intervention
7 juillet 2006
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
je sais que ma question va vous sembler stupide mais je débute en C/C++.

j'ai une structure en global :

struct STRUCT_POSITION_GONIO
{
int intNum; // Numéro du Gonio
char strLettre[1]; // Lettre ou Num du Gonio (Conversion Anglaise)
char strLatitudeHex[8];
int intLatitudeDeci;
char strLongitudeHex[8];
int intLongitudeDeci;
};

STRUCT_POSITION_GONIO Position_Gonio1[1]={0};

Je lis un fichier INI pour la remplir. A la fin de ma lecture je met la valeur dans : Position_Gonio1->intNum=atoi(tmpVal)

Le résultat est bon.

Mais si je fais une autre lecture pour un autre membre de ma structure, cela change la valeur de Position_Gonio1->intNum (tout en gardant la premiere lettre qui est bonne ??).
Avant Position_Gonio1->intNum X, Après Position_Gonio1->intNum XDF51DC qui correspond à Position_Gonio1->strLatitudeHex que je vient lire après.

Est ce ke cela vient de ma déclaration, j'ai du mal à comprendre

J'espère que je suis assez clair.

Sinon comment fait on pour récupérer le premier caractère d'une chaîne.

Merci d'avance.


Jeff.

4 réponses

Messages postés
30
Date d'inscription
jeudi 13 octobre 2005
Statut
Membre
Dernière intervention
7 juillet 2006

Est ce ke qqn peux m'aider SVP

Jeff
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
char strLettre[1];
à quoi sert ce [1] ???
char strLettre; // irait aussi bien
et idem pour ta structure:
STRUCT_POSITION_GONIO Position_Gonio1;

ensuite faudra voir comment tu lis et tu passes les adresses des membres.

ciao...
BruNews, MVP VC++
Messages postés
30
Date d'inscription
jeudi 13 octobre 2005
Statut
Membre
Dernière intervention
7 juillet 2006

salut,

voila comment je lis ma variable.

J'utilise char strLettre[1]; et STRUCT_POSITION_GONIO Position_Gonio1[1] car je n'arrive pas à faire autrement. (je programmais en VB avant et la je suis un peu perdu.)

// strLettre
strcpy(szSection,"Lettre_Anglaise1");
strcpy(szCle,"1");
GetPrivateProfileString( szSection,szCle,"ERREUR",tmpVal,ciTaille,FICHIER_POSITION_GONIO);
if (strcmp(tmpVal,"ERREUR")==0)
{
WritePrivateProfileString( szSection,szCle, "A",FICHIER_INI);
}
else
{
if (strcmp(tmpVal,"")!=0)
{
strcpy(Position_Gonio1->strLettre,tmpVal);
}
else
{
strcpy(Position_Gonio1->strLettre,tmpVal);
};
};
printf("Position_Gonio1.strLettre=%s\n",Position_Gonio1->strLettre);

Si tu peux m'aider...

Jeff.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
typedef struct _STRUCT_POSITION_GONIO {
int intNum; // Numéro du Gonio
char strLettre; // Lettre ou Num du Gonio (Conversion Anglaise)
char strLatitudeHex[8];
int intLatitudeDeci;
char strLongitudeHex[8];
int intLongitudeDeci;
} STRUCT_POSITION_GONIO;

STRUCT_POSITION_GONIO Position_Gonio1;

GetPrivateProfileString( szSection,szCle,"ERREUR",tmpVal,ciTaille,FICHIER_POSITION_GONIO);

strcpy(Position_Gonio1.strLettre,tmpVal);
sauf que c'est IMPOSSIBLE, strLettre ne fait qu'1 seul octet, on ne fait pas un strcpy car il n'y aurait que la place du terminateur NULL de chaine.

ciao...
BruNews, MVP VC++