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; }