Salut a tous,
J'ai un ptit soucis en voulant enregistrer et relire une structure dans un fichier
J'utilise les api CreateFileA, WriteFile et ReadFile
Voici le code:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Oleauto.h>
typedef struct _MY_STRUCT {
long MyLong1;
long MyLong2;
char MyBuffer[5];
} MY_STRUCT;
int PutStructToFile(void * TStruct, LPCSTR sFile, DWORD len)
{
HANDLE hFile;
DWORD Ret = 0;
hFile = CreateFileA(sFile, GENERIC_WRITE, FILE_SHARE_WRITE,NULL, CREATE_NEW,FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hFile, TStruct, len, &Ret, 0);
CloseHandle(hFile);
return 0;
}
int GetStructFromFile(void * TStruct, LPCSTR sFile, DWORD len)
{
HANDLE hFile;
DWORD Ret = 0;
BOOL RetErr = FALSE;
hFile = CreateFileA(sFile, GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL);
RetErr = ReadFile(hFile, TStruct, len, &Ret, 0);
CloseHandle(hFile);
return 0;
}
int main(int argc, char *argv[])
{
HANDLE hFile;
LPCSTR sFile = "E:\\TstFile.txt";
MY_STRUCT TStruct1;
MY_STRUCT TStruct2;
TStruct1.MyLong1 = 10;
TStruct1.MyLong2 = 20;
memcpy(&TStruct1.MyBuffer[0], "Test1", 5);
printf(" TStruct1.MyLong1 = %ld \n TStruct1.MyLong2 = %ld \n TStruct1.MyBuffer = %s \n\n", TStruct1.MyLong1, TStruct1.MyLong2,&TStruct1.MyBuffer[0] ) ;
PutStructToFile(&TStruct1, sFile, sizeof(TStruct1));
GetStructFromFile(&TStruct2, sFile, sizeof(TStruct2));
printf(" TStruct2.MyLong1 = %ld \n TStruct2.MyLong2 = %ld \n TStruct2.MyBuffer = %s \n\n", TStruct2.MyLong1, TStruct2.MyLong2,&TStruct2.MyBuffer[0] ) ;
system("PAUSE");
return 0;
}
et voici le resultat a l'ecran:
TStruct1.MyLong1 = 10
TStruct1.MyLong2 = 20
TStruct1.MyBuffer = Test1
TStruct2.MyLong1 = 2293584
TStruct2.MyLong2 = 200
TStruct2.MyBuffer = Test1
les 2 long sont foireux et je ne parviens pas a trouver pourquoi :(
D'avance merci pour votre aide
++