Le nouveau fichier est créé de tous les enregistrements de l'ancien fichier qui précèdent l'enregistrement à modifier, de l'enregistrement modifié et de tous les enregistrements qui suivent l'enregistrement à modifier dans l'ancien fichier:
#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_MODIF[30], NOM_NOUV[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 à modifier, */ printf("Enregistrement à modifier : "); scanf("%s",NOM_MODIF); /* et de sa nouvelle valeur. */ printf("Enregistrement nouveau : "); scanf("%s",NOM_NOUV); /* Traitement */ /* Copie de tous les enregistrements en */ /* remplaçant l'enregistrement à modifier */ /* par sa nouvelle valeur. */ while (!feof(INFILE)) { fscanf(INFILE, "%s\n", NOM_PERS); if (strcmp(NOM_PERS, NOM_MODIF) = 0) fprintf(OUTFILE, "%s\n", NOM_NOUV); else fprintf(OUTFILE, "%s\n", NOM_PERS); } /* Fermeture des fichiers */ fclose(OUTFILE); fclose(INFILE); return 0; }