2022-12-16 16:59:35 +01:00
|
|
|
/*
|
|
|
|
Decodage du message
|
|
|
|
On ecrit un programme qui à partir d'un fichier message_code et
|
|
|
|
d'un fichier clé produira un fichier message_decode
|
|
|
|
*/
|
|
|
|
|
2022-12-15 22:27:05 +01:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
int decodage(int argc, char *argv[]) {
|
|
|
|
FILE *f_m, *f_k, *f_mdc; /* strcutures permettant, une fois FOPEN
|
|
|
|
exécuté de recupérer des informations pour manipuler les fichiers
|
|
|
|
en C */
|
|
|
|
int c;
|
|
|
|
int k1;
|
|
|
|
int calcul;
|
|
|
|
|
2022-12-16 16:59:35 +01:00
|
|
|
// Ouverture des fichiers et vérification d'erreurs d'ouverture
|
|
|
|
|
2022-12-16 12:28:09 +01:00
|
|
|
char * cheminFic_m = argv[2];
|
2022-12-15 22:27:05 +01:00
|
|
|
f_m = fopen(cheminFic_m, "r");
|
2022-12-16 16:59:35 +01:00
|
|
|
if (f_m==NULL)
|
|
|
|
{
|
|
|
|
printf("Echec de l'ouverture du fichier.\n");
|
2022-12-15 22:27:05 +01:00
|
|
|
}
|
|
|
|
|
2022-12-16 12:28:09 +01:00
|
|
|
char * cheminFic_k = argv[3];
|
2022-12-15 22:27:05 +01:00
|
|
|
f_k = fopen(cheminFic_k, "r");
|
2022-12-16 16:59:35 +01:00
|
|
|
if (f_k==NULL)
|
|
|
|
{
|
|
|
|
printf("Echec de l'ouverture du fichier.\n");
|
2022-12-15 22:27:05 +01:00
|
|
|
}
|
|
|
|
|
2022-12-16 12:28:09 +01:00
|
|
|
char * cheminFic_mdc = argv[4];
|
2022-12-15 22:27:05 +01:00
|
|
|
f_mdc = fopen(cheminFic_mdc, "w");
|
2022-12-16 16:59:35 +01:00
|
|
|
if (f_mdc==NULL)
|
|
|
|
{
|
|
|
|
printf("Echec de l'ouverture du fichier.\n");
|
2022-12-15 22:27:05 +01:00
|
|
|
}
|
|
|
|
|
2022-12-16 16:59:35 +01:00
|
|
|
|
|
|
|
// Boucle : calcul permettant de decoder un caractère puis l'écrire dans le
|
|
|
|
// fichier f_mdc
|
2022-12-16 12:28:09 +01:00
|
|
|
while ((c = fgetc(f_m)) != EOF)
|
|
|
|
{
|
|
|
|
k1 = fgetc(f_k);
|
|
|
|
calcul = c-k1 >= 0?c-k1:256-(c-k1);
|
|
|
|
fputc(calcul, f_mdc);
|
|
|
|
}
|
|
|
|
|
2022-12-16 16:59:35 +01:00
|
|
|
//fermeture des fichiers
|
2022-12-15 22:27:05 +01:00
|
|
|
fclose(f_m);
|
|
|
|
fclose(f_k);
|
|
|
|
fclose(f_mdc);
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
}
|