Advertisement
Guest User

Untitled

a guest
Dec 16th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.85 KB | None | 0 0
  1. void suppressionPays(char * nomFichier)
  2. {
  3.     FILE *ptMem=NULL;
  4.     Pays *tabPays;
  5.     Pays unPays;   // utile lors de la lecture du fichier pour récupérer un bloc de données
  6.     char nomPaysASupprimer[15];   // valeur saisie par l”utilisateur
  7.     int nbBlocsLus, nbBlocsALire=1;
  8.     int i; // déclaration des variables utiles à la lecture de fichier
  9.     int taille, nbElem;
  10.  
  11.     system("cls");
  12.     SetConsoleOutputCP(1252); //police de windows 1252 (accentuée)
  13.     ptMem=fopen(nomFichier, "rb"); //ouverture du fichier binaire en mode lecture
  14.     if (ptMem==NULL) //si ouverture du fichier n'a pas fonctionnée, l'affiche et sort de la fonction.
  15.     {
  16.         printf("Erreur de lecture du fichier");
  17.         exit (-1);
  18.     }
  19.  
  20.     printf("Saisir le nom du pays à supprimer\n");
  21.     gets(nomPaysASupprimer);//lecture du nom du pays
  22.     fflush(stdin); //vide le buffer clavier
  23.  
  24.     fseek(ptMem, 0 , SEEK_END);
  25.     taille = ftell(ptMem);
  26.     nbElem=taille/sizeof(Pays);
  27.  
  28.     tabPays=(Pays*)malloc((nbElem-1)*sizeof(Pays));
  29.     if(tabPays==NULL){
  30.     printf("Problème de réservation mémoire");
  31.     }
  32.  
  33.     for(i=0; i<nbElem; i++)
  34.     {
  35.         nbBlocsLus=fread(&unPays, sizeof(Pays), nbBlocsALire, ptMem);
  36.         if (nbBlocsLus != nbBlocsALire && !feof(ptMem))
  37.             printf("Erreur de lecture");
  38.  
  39.         if (!feof(ptMem) && !(compareArrays(unPays.nomPays, nomPaysASupprimer, 4)))
  40.         {
  41.             tabPays[i]=unPays;
  42.         }
  43.     }
  44.     fclose(ptMem); //fermeture de ptMem
  45.  
  46.     ptMem=fopen(nomFichier, "wb"); //ouverture du fichier binaire en mode écriture
  47.     if (ptMem==NULL) //si ouverture du fichier n'a pas fonctionnée, l'affiche et sort de la fonction.
  48.     {
  49.         printf("Erreur de lecture du fichier");
  50.         exit (-1);
  51.     }
  52.  
  53.     fwrite( tabPays, ((nbElem-1)*sizeof(Pays)), 1, ptMem);
  54.     fclose(ptMem);
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement