Java
This commit is contained in:
77
DEV1.1/CM3/blague_resolu.c
Normal file
77
DEV1.1/CM3/blague_resolu.c
Normal file
@@ -0,0 +1,77 @@
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user