a) Supprimer les enregistrements, dont le numéro de matricule se termine par 8
#include <stdio.h> #include <stdlib.h> main() { /* Déclarations : */ /* Noms des fichiers et pointeurs de référence */ char ANCIEN[] = "A:\\INFORM.TXT"; char NOUVEAU[] = "A:\\INFBIS.TXT"; FILE *INFILE, *OUTFILE; /* Autres variables */ char NOM[30], PRENOM[30]; int MATRICULE; /* Ouverture de l'ancien fichier en lecture */ INFILE = fopen(ANCIEN, "r"); if (!INFILE) { printf("\aERREUR: Impossible d'ouvrir " "le fichier: %s.\n", ANCIEN); exit(-1); } /* Ouverture du nouveau fichier en écriture */ OUTFILE = fopen(NOUVEAU, "w"); if (!OUTFILE) { printf("\aERREUR: Impossible d'ouvrir " "le fichier: %s.\n", NOUVEAU); exit(-1); } /* Copie de tous les enregistrements à l'exception */ /* de ceux dont le numéro de matricule se termine */ /* par 8. */ while (!feof(INFILE)) { fscanf (INFILE, "%d\n%s\n%s\n", &MATRICULE, NOM, PRENOM); if (MATRICULE%10 != 8) fprintf(OUTFILE, "%d\n%s\n%s\n", MATRICULE,NOM,PRENOM); } /* Fermeture des fichiers */ fclose(OUTFILE); fclose(INFILE); return 0; }
b) Supprimer les enregistrements, dont le prénom est "Paul" (utiliser strcmp)
#include <stdio.h> #include <stdlib.h> #include <string.h> main() { /* Déclarations */ . . . /* Ouverture de l'ancien fichier en lecture */ . . . /* Ouverture du nouveau fichier en écriture */ . . . /* Copie de tous les enregistrements à l'exception */ /* de ceux dont le prénom est 'Paul'. */ while (!feof(INFILE)) { fscanf (INFILE, "%d\n%s\n%s\n", &MATRICULE, NOM, PRENOM); if (strcmp(PRENOM,"Paul") != 0) fprintf(OUTFILE, "%d\n%s\n%s\n", MATRICULE,NOM,PRENOM); } /* Fermeture des fichiers */ . . . }
c) Supprimer les enregistrements, dont le nom est un palindrome. Définir une fonction d'aide PALI qui fournit le résultat 1 si la chaîne transmise comme paramètre est un palindrome, sinon la valeur zéro.
#include <stdio.h> #include <stdlib.h> main() { /* Prototype de la fonction PALI */ int PALI(char *CH); /* Déclarations */ . . . /* Ouverture de l'ancien fichier en lecture */ . . . /* Ouverture du nouveau fichier en écriture */ . . . /* Copie de tous les enregistrements à l'exception */ /* des palindromes. */ while (!feof(INFILE)) { fscanf (INFILE, "%d\n%s\n%s\n", &MATRICULE, NOM, PRENOM); if (!PALI(NOM)) fprintf(OUTFILE, "%d\n%s\n%s\n", MATRICULE,NOM,PRENOM); } /* Fermeture des fichiers */ . . . } int PALI(char *CH) { /* Variable locale */ char *CH2; /* Placer CH2 à la fin de la chaîne */ for (CH2=CH; *CH2; CH2++) ; CH2--; /* Contrôler si la chaîne désignée par CH est un palindrome */ for (; CH<CH2; CH++,CH2--) if (*CH != *CH2) return 0; return 1; }