77 lines
1.4 KiB
C
77 lines
1.4 KiB
C
![]() |
#include <stdio.h>
|
|||
|
#include <stdlib.h>
|
|||
|
|
|||
|
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;
|
|||
|
}
|