/*
Name: offset-decode
Author: cLx - http://clx.freeshell.org/
Description: Pour decoder les conneries à Timmy ;))
Date: 16/08/04 18:00
Infos: On s'était amusés à faire du ROT13 pas 13 du tout ;) Ce qui etait marrant, c'est
que chaque personne avait fait son propre outil. C'etait le bon vieux temps. ;)
X-Capture-d'écran-ici: http://clx.freeshell.org/view.html?f=captures/LightFox_vs_cLx.png
*/
#define MAX_INPUT_LENGTH 4000
#include <stdio.h>
void rot(int offset, char string[]) {
int debut, carac, i = 0;
while (offset < 0){
offset+=26;
}
while (string[i]) {
carac = string[i++];
if (carac>='A' && carac<='Z') { debut = 'A'; }
else if (carac>='a' && carac<='z') { debut = 'a'; }
else { debut = 0; }
if (debut) { carac = debut + (carac + offset - debut) % 26; }
printf("%c", carac);
}
printf("\n");
}
int main(void){
signed int offset = 0;
char input[MAX_INPUT_LENGTH];
/* Demande de la chaine à encoder/decoder */
printf("String? ");
gets(input);
/* Demande du nombre de lettre de decalage */
printf("Offset? (0 to scan) : ");
scanf("%i", &offset);
printf("\n");
if (offset) { rot(offset, input); }
else {
for (offset = 0; offset <= 26; offset++){
printf("%3i: ", offset);
rot(offset, input);
}
}
return 0;
}