[cpp]#include 
#include 
int main(int argc, char *argv[]) {
   if (argc < 2) {
      printf("zoneinc: opérande fichier manquant\n");
      return -3;
   }
   
   char *file = argv[1];
   //char *file = malloc(sizeof(char) * strlen(argv[1]));
   //strcpy(file, argv[1]);
   
   printf("DEBUG: fichier à lire : %s\n", file);
   
   FILE *zone_in;
   FILE *zone_out;
   
   zone_in = fopen (file, "r"); // fichier de zone
   zone_out = fopen ("tmp", "w"); // fichier de zone temporaire
   if (zone_in == NULL) return -1; // fichier de zone
   if (zone_out == NULL) { // fichier de zone temporaire
      fclose(zone_in);
      return -2;
   }
   char head[100] = {0};
   fscanf(zone_in, "%[0-9a-zA-Z\n\t .$-](", head); // recuperation de la tete du fichier de zone
      
   int date[9] = {0};
   fscanf(zone_in, "%8d", date); // recuperation de la date de la derniere maj
   int num[3] = {0};
   fscanf(zone_in, "%d", num); // recuperation du numero de version de la derniere maj
   // recupere la date courante
   char now[11] = {0};
   time_t t = time(NULL);
   struct tm *tm = localtime(&t);
   strftime(now, sizeof(now)-1, "%Y%m%d", tm);
   fprintf(zone_out, "%s", head); // restitution de la tete du fichier de zone
   
   // ecriture du nouveau serial   
   if (*date != atoi(now)) fprintf(zone_out, "(\n\t\t%d00", atoi(now));
   else {
      if (*num<9) fprintf(zone_out, "(\n\t\t%d0%d", *date, *num+1);
      else fprintf(zone_out, "(\n\t\t%d%d", *date, *num+1);
   }
   
   // restitution du reste du fichier de zone   
   char ligne[256];
   while(fgets(ligne, sizeof ligne, zone_in)) fputs(ligne, zone_out);
   
   fclose(zone_in);
   fclose(zone_out);
   rename("tmp", file);
   
   return 0;
}[/cpp]