Correction Bug pointeur menu 3 vers 1

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
This commit is contained in:
adriy 2017-05-19 09:12:49 +00:00
parent a1065d9a44
commit a044cf8437
1 changed files with 16 additions and 20 deletions

View File

@ -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
{