Salve a tutti, stavo creando una funzione per un cifrario di cesare con chiave scelta dall'utente, in un range 0-26. Per vedere se funzionava ho inserito tutto l'alfabeto, e funziona bene tranne per le ultime 5 lettere (vwxyz). Qualcuno sa dirmi il perchè?

Questa è la funzione:

codice:
void cifrarioPersonalizzato(){
    char stringa[DIM_STR];
    int i, chiave;
    // Acquisizione chiave
    printf("# Inserisci la chiave (0-26).\n");
    printf("Chiave: ");
    scanf("%d", &chiave);
    while(chiave<0 || chiave>26){
        printf("Chiave errata.\nValore minimo: 0, valore massimo: 26.\n");
        printf("Chiave: ");
        scanf("%d", &chiave);    
    }
    // Acquisizione stringa
    printf("\n# Inserisci la frase.\n");
    printf("MAX 150 caratteri, NO maiuscolo.\n");
    printf("Frase: ");
    fflush(stdin);
    gets(stringa);
    // Cifratura
    for(i=0; i<strlen(stringa); i++){
        if(stringa[i]>='a' && stringa[i]<='z'){
            stringa[i]=stringa[i]+chiave;
            // Se supera la z deve ricominciare dalla a 
            // Quindi tolgo 26 (alfabeto di 26 lettere)
            if(stringa[i]>'z')
                stringa[i]=stringa[i]-26;
        }   
    }
    printf("\nLa frase criptata e': %s\n\n", stringa);
}