From a044cf84379bd716abae959a7d8ec1c6a0474fb2 Mon Sep 17 00:00:00 2001 From: adriy Date: Fri, 19 May 2017 09:12:49 +0000 Subject: [PATCH] Correction Bug pointeur menu 3 vers 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fuite mémooire car changement de pointeur qui est le pointeur du tableau. Si on modif se pointeur ça modif le tableau. Donc utilisation de memcpy pour ne pas changé le pointeur --- VANDAMME32.c | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/VANDAMME32.c b/VANDAMME32.c index 4b4bb7b..3dedb28 100644 --- a/VANDAMME32.c +++ b/VANDAMME32.c @@ -160,6 +160,7 @@ int main() localiserFichiersClients(&fichierClient); nbrClient = nombreClients(&fichierClient); recupererClients(&fichierClient, &clientTab); + afficherListeClients(clientTab); while(w) { if(clientTab) @@ -181,23 +182,18 @@ int main() { case 1: - client->ofsetFichierDat = 0; - client->ofsetFichierTXT = 0; - if(encoderClient(client, clientTab)) - { - afficherClient(client, &date); - printf("1\n"); - fseek(fichierClient.txt, 0, SEEK_END); - printf("1\n"); - insertClientTabTrier(client, &clientTab); - printf("1\n"); - sauvegarderTabClientFile(&fichierClient, clientTab); - printf("1\n"); - w = gestionClient(client, &date, &fichierClient); - printf("1\n"); - nbrClient++; + client->ofsetFichierDat = 0; + client->ofsetFichierTXT = 0; + if(encoderClient(client, clientTab)) + { + afficherClient(client, &date); + fseek(fichierClient.txt, 0, SEEK_END); + insertClientTabTrier(client, &clientTab); + sauvegarderTabClientFile(&fichierClient, clientTab); + w = gestionClient(client, &date, &fichierClient); + nbrClient++; + } break; - } case 2: if(clientTab) { @@ -220,7 +216,7 @@ int main() } while(idClient > nbrClient); if(idClient != 0) { - client = *(clientTab+(idClient-1)); + memcpy(client, *(clientTab+(idClient-1)), sizeof(Client)); w = gestionClient(client, &date, &fichierClient); } break; @@ -292,12 +288,13 @@ Bool encoderClient(Client * client, Client ** clientsTab) if(choix != 'a') { printf("Le client existe deja. Reesayer ? (Y|n)");clean_keyboard();scanf("%c", &choix); - if(!((choix|0b00100000) == 'y')) + if(((choix|0b00100000) != 'y')) return FALSE; } while(!(printf("\nNom client :") && clean_keyboard() && fgets(client->nom,__STRLEN__,stdin) != NULL)); while(!(printf("\nPrenom client :") && clean_keyboard() && fgets(client->prenom,__STRLEN__,stdin) != NULL)); choix = 'b'; + cleanFgets(client->nom);cleanFgets(client->prenom); } while(rechercheClientArray(client->nom, client->prenom, clientsTab, 0)); //On ne sais pas facilement acceder au tris donc par default non trier while(!(printf("Entrez la rue :") && clean_keyboard() && fgets(client->adresse.rue,__STRLEN__,stdin) != NULL)); @@ -306,7 +303,6 @@ Bool encoderClient(Client * client, Client ** clientsTab) while(!(printf("\nEntrez le code postal :") && clean_keyboard() && scanf("%d", &(client->adresse.codePostal)) )); cleanFgets(client->adresse.rue);cleanFgets(client->adresse.numero);cleanFgets(client->adresse.localite); - cleanFgets(client->nom);cleanFgets(client->prenom); while(!(printf("\n Entrez le numero de tel. :") && clean_keyboard() &&fgets(client->contact.telephone,13,stdin))); while(!(printf("\nEntrez l'adresse email :") && clean_keyboard() &&fgets(client->contact.email,__STRLEN__,stdin))); cleanFgets(client->contact.telephone);cleanFgets(client->contact.email); @@ -1196,7 +1192,7 @@ ListeArticle * rechercheElemListe(ListeArticle * listeArticle) Bool rechercheClientArray(char *nom, char * prenom, Client ** clients, Bool tri) { - if(!clients) + if(!clients && !(*clients)) return FALSE; if(tri && 1==2) // a faire {