Previous Next Up Index Contents

11.7.2. Supprimer un enregistrement dans un fichier

Le nouveau fichier est créé en copiant tous les enregistrements de l'ancien fichier qui précèdent l'enregistrement à supprimer et tous ceux qui le suivent:

Solution en C

#include <stdio.h>
#include <string.h>

main()
{
  /* Déclarations : */
  /* Noms des fichiers et pointeurs de référence */
  char ANCIEN[30], NOUVEAU[30]; 
  FILE *INFILE, *OUTFILE;
  /* Autres variables */
  char NOM_PERS[30], NOM_SUPPR[30];
  /* Ouverture de l'ancien fichier en lecture */
  do
    {
     printf("Nom de l'ancien fichier : ");
     scanf("%s", ANCIEN);
     INFILE = fopen(ANCIEN, "r"); 
     if (!INFILE) 
         printf("\aERREUR: Impossible d'ouvrir "
                "le fichier: %s.\n", ANCIEN);
    }
  while (!INFILE);
  /* Ouverture du nouveau fichier en écriture */
  do
    {
     printf("Nom du nouveau fichier : ");
     scanf("%s", NOUVEAU);
     OUTFILE = fopen(NOUVEAU, "w"); 
     if (!OUTFILE) 
         printf("\aERREUR: Impossible d'ouvrir "
                "le fichier: %s.\n", NOUVEAU);
    }
  while (!OUTFILE);
  /* Saisie de l'enregistrement à supprimer */
  printf("Enregistrement à supprimer : ");
  scanf("%s",NOM_SUPPR);
  /* Traitement */
  /* Copie de tous les enregistrements à */
  /* l'exception de celui à supprimer.   */
  while (!feof(INFILE))
    {
     fscanf(INFILE, "%s\n", NOM_PERS);
     if (strcmp(NOM_PERS, NOM_SUPPR) != 0)
          fprintf(OUTFILE, "%s\n", NOM_PERS);
    }
  /* Fermeture des fichiers */
  fclose(OUTFILE);
  fclose(INFILE);
  return 0;
} 


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber