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:
#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; }