Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void suppressionPays(char * nomFichier)
- {
- FILE *ptMem=NULL;
- Pays *tabPays;
- Pays unPays; // utile lors de la lecture du fichier pour récupérer un bloc de données
- char nomPaysASupprimer[15]; // valeur saisie par l”utilisateur
- int nbBlocsLus, nbBlocsALire=1;
- int i; // déclaration des variables utiles à la lecture de fichier
- int taille, nbElem;
- system("cls");
- SetConsoleOutputCP(1252); //police de windows 1252 (accentuée)
- ptMem=fopen(nomFichier, "rb"); //ouverture du fichier binaire en mode lecture
- if (ptMem==NULL) //si ouverture du fichier n'a pas fonctionnée, l'affiche et sort de la fonction.
- {
- printf("Erreur de lecture du fichier");
- exit (-1);
- }
- printf("Saisir le nom du pays à supprimer\n");
- gets(nomPaysASupprimer);//lecture du nom du pays
- fflush(stdin); //vide le buffer clavier
- fseek(ptMem, 0 , SEEK_END);
- taille = ftell(ptMem);
- nbElem=taille/sizeof(Pays);
- tabPays=(Pays*)malloc((nbElem-1)*sizeof(Pays));
- if(tabPays==NULL){
- printf("Problème de réservation mémoire");
- }
- for(i=0; i<nbElem; i++)
- {
- nbBlocsLus=fread(&unPays, sizeof(Pays), nbBlocsALire, ptMem);
- if (nbBlocsLus != nbBlocsALire && !feof(ptMem))
- printf("Erreur de lecture");
- if (!feof(ptMem) && !(compareArrays(unPays.nomPays, nomPaysASupprimer, 4)))
- {
- tabPays[i]=unPays;
- }
- }
- fclose(ptMem); //fermeture de ptMem
- ptMem=fopen(nomFichier, "wb"); //ouverture du fichier binaire en mode écriture
- if (ptMem==NULL) //si ouverture du fichier n'a pas fonctionnée, l'affiche et sort de la fonction.
- {
- printf("Erreur de lecture du fichier");
- exit (-1);
- }
- fwrite( tabPays, ((nbElem-1)*sizeof(Pays)), 1, ptMem);
- fclose(ptMem);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement