#include #include typedef struct { char valeurs[1000]; int debut; int fin; size_t taille; } file; void initialise_file(file* f) { f->debut = 0; f->fin = 0; f->taille = 0; } int empty(file* f) { return (f->taille == 0); } void enqueue(file* f, char c) { f->valeurs[f->fin] = c; f->fin++; f->taille++; } char dequeue(file* f) { if (empty(f)) { printf("Erreur : La file est vide.\n"); return; } f->debut++; f->taille--; return f->valeurs[f->debut-1]; } int main(int argc, char** argv) { FILE* fichier = NULL; file f; char resultat; initialise_file(&f); if (argc != 2) { printf("Il faut entrer un (unique) chemin de fichier.\n"); return EXIT_FAILURE; } fichier = fopen(argv[1], "r"); if (fichier == NULL) { printf("Erreur d'ouverture.\n"); return EXIT_FAILURE; } fread(&resultat, 1, 1, fichier); if (resultat == ';') { /* Point d'interrogation grec */ enqueue(&f, ';'); /* Point virgule */ } else { enqueue(&f, resultat); } while (feof(fichier) != 0) { fread(&resultat, 1, 1, fichier); if (resultat == ';') { /* Point d'interrogation grec */ enqueue(&f, ';'); /* Point virgule */ } else { enqueue(&f, resultat); } fclose(fichier); fichier = fopen(fichier, "w+"); while (feof(fichier) != 0) { resultat = dequeue(&f); fwrite(&resultat, 1, 1, fichier); } fclose(fichier); return EXIT_SUCCESS; }