On va coder un algorithme de cryptage très simple : on choisit un décalage (par exemple 5), et un a sera remplacé par un f, un b par un g, un c par un h, etc. On ne cryptera que les lettres majuscules et minuscules sans toucher ni à la ponctuation ni à la mise en page (caractères blancs et line feed). On supposera que les codes des lettres se suivent de a à z et de A à Z. On demande de :
#include <stdio.h>
char mess[] = "Les sanglots longs des violons de l'automne\n\
blessent mon coeur d'une langeur monotone";
#define DECALAGE 5
/*****************************************************************************/
/* */
/* crypt */
/* */
/* But: */
/* Crypte le caractère passé en paramètre */
/* */
/* Interface: */
/* p : pointe le caractère à crypter */
/* */
/*****************************************************************************/
void crypt(char *p)
{
enum {BAS, HAUT};
int casse;
if (*p >= 'a' && *p <= 'z') casse = BAS;
else if (*p >= 'A' && *p <= 'Z') casse = HAUT;
else return;
*p = *p + DECALAGE;
if (casse == BAS && *p > 'z' || casse == HAUT && *p > 'Z') *p = *p -26;
}
/*****************************************************************************/
/* */
/* main */
/* */
/*****************************************************************************/
int main(void)
{
char *p;
int i;
/* phase de cryptage */
p = &mess[0];
while(*p)
crypt(p++);
/* impression du résultat */
printf("Résultat:\n");
printf(mess);
printf("\n");
return 0;
}