MI è stato assegnato questo esercizio del cifrario di cesare, dove la chiave di criptaggio ovvero il salto da eseguire deve essere casuale, il problema che non mi funziona quando digito tipo "casa"
l'indice di c è 2 ed esce una chiave come 20 superando quindi la lunghezza dell'alfabeto, cercavo quindi una soluzione per far cominciare a girare di nuovo l'alfabeto dalla lettera a ed assegnare quindi la corrispondente lettera, perchè superato l'indice di z mi da simboli che non c'entrano nulla. Grazie in anticipo
#include <stdio.h>
#include <string.h>
void cesare (char s,int salto)
{
char alfabeto[21]={'a','b', 'c', 'd' ,'e' ,'f' ,'g' ,'h' ,'i' ,'l' ,'m' ,'n', 'o', 'p' ,'q', 'r', 's' ,'t' ,'u', 'v' ,'z'} ;
int i;
for(i=0;i<21;i++)
{
if(s==alfabeto)
{
printf ("%c",alfabeto[i+salto]);
break;
}
}
}
int main()
{
char cript[100];
int S,lung,i;
printf("Inserisci la parola da criptare > ");
scanf("%s",cript);
S=rand()%21; //S è il salto che dovrà eseguire nella criptazione
lung=strlen(cript);
for (i=0;i<lung;i++)
{
cesare(cript,S);
}
return 0;
}