decodages/etape2.c

71 lines
2.6 KiB
C
Raw Normal View History

2024-01-23 16:05:38 +01:00
#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 = 1;
/* 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("Etape2.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));
/* 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;
}