#include #include /* Prend en parametre un entier et un entier a additionner */ int indexcesar(int index, int cesar){ index += cesar; if(index > 25) { index -= 26; } return index; } int main(int argc, char const *argv[]) { int cesar = 0; /* Creation du tableau contenant toutes les lettres de l'alphabet */ char alphabetMajuscule[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; char alphabetMinuscule[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; /* Creation d'un pointeur de fichier */ FILE* stream = fopen("Etape3.bin","r"); /* S'il y a un probleme dans l'ouverture du fichier renvoie une erreur */ if (ferror(stream)) { perror("Il y a un probleme dans l'ouverture du fichier !"); return EXIT_FAILURE; } /* Creation d'un pointeur de charactere qui alloue en memoire la taille d'un caractere */ char* zone_char = malloc(sizeof(char)); /* Lecture du premier caractere, renvoie une erreur s'il ne l'a pas bien lu */ if (fread(zone_char, sizeof(char), 1, stream) != 0) { int i = 0; /* On trouve l'index du caractere dans le tableau */ for (i; i <= 25; i++) { if(*zone_char == alphabetMajuscule[i]) { /* On ajoute 1 a la valeur du parametre de cesar jusqu'a ce qu'on retombe sur le caractere "F" */ for (cesar; alphabetMajuscule[i] != 'F'; cesar++) { i = indexcesar(i, 1); } break; } } printf("%c", alphabetMajuscule[i]); } else { perror("Lecture dans la lecture du premier caractere "); return EXIT_FAILURE; } /* Tant qu'on atteint pas la fin du fichier */ while(!feof(stream)) { /* lecture d'un caractere */ if (fread(zone_char, sizeof(char), 1, stream) != 0) { /* Parcours du tableau pour retrouver la position du caractere*/ int index = 0; for (index; index <= 25; index++) { /* si le caractere est une majuscule */ if (*zone_char == alphabetMajuscule[index]) { /* On rajoute le deplacement dans l'alphabet de cesar et on sort de la boucle */ index = indexcesar(index, cesar); printf("%c", alphabetMajuscule[index]); break; } /* si le caractere est une minuscule */ if (*zone_char == alphabetMinuscule[index]) { /* On rajoute le deplacement dans l'alphabet de cesar et on sort de la boucle */ index = indexcesar(index, cesar); printf("%c", alphabetMinuscule[index]); break; } } /* si la boucle ne s'est jamais arretee, alors ce n'est pas une lettre sinon c'est une lettre et on montre sa nouvelle valeur */ if (index == 26) { printf("%c", *zone_char); } } } fclose(stream); free(zone_char); return EXIT_SUCCESS; }