#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define isletter(c) (((c>='a')&&(c<='z'))||((c>='A')&&(c<='Z')))
#define isuppercase(c) (c>='A')&&(c<='Z')
#define islowercase(c) (c>='a')&&(c<='z')
int
main (int argc, char *argv[])
{
int i;
int base;
int tmp;
unsigned int lowercase_start='a';
unsigned int lowercase_stop='z';
unsigned int uppercase_start='A';
unsigned int uppercase_stop='Z';
char *truc = malloc(1000);
char *truc2 = malloc(1000);
if (((strncmp(argv[1],"-h",2)==0)) ||
(strncmp(argv[1],"--help",6)==0))
{
printf("Usage: %s [(int) Rotation] T e x t e\n",argv[0]);
exit(0);
}
if (argc-1 < 2 )
{
printf("Moins de 2 arguments => Kablam\n");
printf("Regardez donc %s --help\n",argv[0]);
exit(1);
}
base = atoi( argv[1] );
for (i=2;i<argc;i++)
{
strcat (truc, argv[i]);
strcat (truc, " ");
}
for (i=0;i<strlen(truc);i++)
{
if (isletter(truc[i]))
{
if (islowercase(truc[i]))
{
if ((truc[i] + base) > lowercase_stop)
{
tmp = ((lowercase_start-1) + ((truc[i] + base) - lowercase_stop));
}
else
{
tmp = truc[i] + base;
}
truc2[i] = tmp;
}
else if (isuppercase(truc[i]))
{
if ((truc[i] + base) > uppercase_stop)
{
tmp = ((uppercase_start-1) + ((truc[i] + base) - uppercase_stop));
}
else
{
tmp = truc[i] + base;
}
truc2[i] = tmp;
}
}
else
truc2[i] = truc[i];
}
fprintf (stdout, "%s\n",truc2);
free (truc);
free (truc2);
return 0;
}