oregon ha scritto:
e qui la fclose c'era.
non si tratta di quella fclose li..
oregon ha scritto:
Infatti a me funzionava senza errori.
Se usi un codice e ne mostri un altro, stiamo una settimana a cercare problemi che non ci sono.
è vero che avevo omesso questo
if (fopen_s(&file, "./addressBook.list", "rb"))
{
fopen_s(&file, "./addressBook.list", "wb");
fclose(file);
};
ma poi mi sembra di aver scritto che stupidamente lo avevo omesso... e lo ho postato praticamente subito dopo..e li il problema c'era eccome in quelle 4 righe
nessuno mi ha detto che se uso fopen() nella condizione di una if devo anche chiuderlo dopo la if stessa ma alla fine ci sono arrivato e va bene così.
concordo che ho fatto un post confusionario e ti chiedo scusa se ti ho fatto perdere tempo.
ricapitolando:
void LoadAddressBook()
{
contactStructType* curContact = (contactStructType*)malloc(sizeof(contactStructType));
memset(curContact, 0, sizeof(contactStructType));
char name[30];
char surname[30];
char number[30];
int i = 0;
FILE* file;
if (fopen_s(&file, "./addressBook.list", "rb"))
{
fopen_s(&file, "./addressBook.list", "wb");
fclose(file);
}
fclose(file);
fopen_s(&file, "./addressBook.list", "rb");
fread(curContact, sizeof(contactStructType), 1, file);
while (!feof(file))
{
strcpy_s(name, curContact->name);
strcpy_s(surname, curContact->surname);
strcpy_s(number, curContact->number);
fread(curContact, sizeof(contactStructType), 1, file);
LoadContact(name, surname, number);
}
fclose(file); //va a buon fine restituendo 0
}