Tableau de structure

Signaler
Messages postés
36
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2006
-
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Salut a tous!!!!

voila j'ai mis un tableau de structure en memoire et je voudrais l' enregistrer dans un fichier donc s'il y a des personnes qui peuvent m'aider je les remercie...............................

9 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Sous Windows:
DWORD d;
WriteFile(hfl, tabStrct, nbrElems * sizeof(TYPESTRUCT), &d, 0);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
nbrElems * sizeof(TYPESTRUCT)? Si il fait juste sizeof(TYPESTRUCT) ça marche pas?
J'ai faite ceci moi pour tester et sa marche très bien. Il récupère tout:

struct test
{
LPSTR a;
int b;
};

// Dans la fonction main
HANDLE file;
DWORD d;
test tetest, ttest;

file = CreateFile("test.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

tetest.a = "allo";
tetest.b = 4;

WriteFile(file, &tetest, sizeof(test), &d, 0);

CloseHandle(file);

file = CreateFile("test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

ReadFile(file, &ttest, sizeof(test), &d, 0);

printf("%s %d", ttest.a, ttest.b);

CloseHandle(file);

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
36
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2006

Est ce ke tu c comment on fais pour initialiser dans le main une structure parceke kan je compile, il me dis d'initialiser.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Quoi? Peut tu me dire ce que dit exactement le compilateur.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
sizeof(ptrArrayStruct) donnera 4 si tu le reçois en param de fonction où si c'est une alloc dynamique. Ce genre d'écriture est à oublier si on ne veut pas se retrouver avec des bugs difficiles à cerner.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
36
Date d'inscription
lundi 13 novembre 2000
Statut
Membre
Dernière intervention
27 mai 2006

Enfaite moi j'utilise fopen pour enregistrer et comme je l'ai dis au debut j'ai mis en memoire un tableau de structure du type:
typedef struct _lastruct
{
char fruit;
int legume;
}lastruct;

J'ai une methode save(lastruct letout) dans le .h et donc dans mon main je fais :
lastruct letest;
CFichier lasave;

lasave.save(letest);

Et dans mon .cpp j'ai :
void CFichier::Save(lastruct letout)
et ensuite je fais la sauvegarde mais le probleme c ke le compilateur me dis ke dans le main j'initialise pas letest.
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Ha bon. Je s'avais pas ça. Mais je comprend pas pourquoi cela donnera 4 en param. Désolé d'être pot de colle mais moi plus j'en sais mieu je me porte(et les autres aussi).

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
Un pointeur sur system 32 bits fait toujours 4 octets et 8 sur system 64 bits

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Ha oui. C'est très logique.

lunatic34>Je comprend vraiment pas le problème. ta structure letest à telle une valeur? À tu mit quelque chose dedans?

___________________________________________
Les plus grands esprits trouvent toujours une solution