95 lines
3.4 KiB
C
95 lines
3.4 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
/* 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;
|
|
} |