Probleme avec fscanf pour des floats

Résolu
cs_Florian29 Messages postés 52 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 12 avril 2006 - 12 avril 2006 à 14:19
cs_Florian29 Messages postés 52 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 12 avril 2006 - 12 avril 2006 à 16:26
Salut !
J'ai un soucis pour lire un fichier contenant des donnees de ce type:
12343 11224 500.00 500.00
1432 11225 250.00 0.00
1432 11226 1.00 0.50

Je veux stocker ces donnees dans une structure de type:
typedef struct {
unsigned int ID;
unsigned int invoiceNumber;
float invoiceAmount;
float cashAmount;
} Account;

Account accountArray[50];

Avec:
while (fscanf(myFile,"%d %d %f %f\n",
&(accountArray+accountCount)->ID,
&(accountArray+accountCount)->invoiceNumber,
&(accountArray+accountCount)->invoiceAmount,
&(accountArray+accountCount)->cashAmount
)!= EOF) // This is the read and test for EOF
{
accountCount++;
}

Mais en faisant tourner ca, mon prog plante a chaque fois. En essayant d'autres solutions ca ne plante pas mais mes valeurs restent a 0.00 et la lecture est toute decallee.
Si je remplace les valeurs contenus dans le fichier par des entiers et si je mets "%d %d %d %d\n" y a pas de soucis.
J'ai essaye avec: "%d %d %.2f %.2f\n", "%d\t%d\t%.2f\t%.2f\n"....
Je vois pas ce qui pose probleme....

Si quelqun a une idee, je suis preneur!!!

2 réponses

Taron31 Messages postés 199 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 28 février 2008
12 avril 2006 à 14:54
C'est cette syntaxe là qui fait planter ton programme : &(accountArray+accountCount)->ID
Tu dois avoir un memory leak au niveau de l'instruction +accountCount ; ça doit lire n'importe où dans la mémoire...
A quoi est censé correspondre la variable accountCount ? A un index ?
___________________
MVS - Most Valuable Student ( Microsoft)
3
cs_Florian29 Messages postés 52 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 12 avril 2006
12 avril 2006 à 16:26
Je viens de reessayer en utilisant une syntaxe plus habituelle &(accountArray[accountCount].ID)
et effectivement le probleme est resolu!!!
Etonnant.....

Merci bcp!
0
Rejoignez-nous