I'm trying to write the substitution cipher but, a part of it, in particular the one where it sees me if the inserted alphabet is composed only of text characters "a ... z", doesn't work me. Could you tell me why the isalpha function (alfabeto_sostitutivo), although I insert the normal alphabet, gives me 0 as a result? Thanks in advance for the time spent.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main () {
int caratteri_diversi_1 = 0, caratteri_diversi_2 = 0, b = 0, tutti_alpha = 0, alpha_minuscoli = 0, alpha_maiuscoli = 0;
char alfabeto_sostituzione [27];
printf ("Inserisci l'alfabeto di criptazione (inglese):\n");
fgets (alfabeto_sostituzione, sizeof(alfabeto_sostituzione), stdin);
if (strlen(alfabeto_sostituzione)==26) //se la lunghezza dell'alfabeto sostitutivo è giusta
{
printf("I due alfabeti sono lunghi uguale\n");
for (int c=0; alfabeto_sostituzione[c] != '\0'; c++)
{
if (isalpha(alfabeto_sostituzione[c])==1)
alpha_minuscoli++;
else if (isalpha(alfabeto_sostituzione[c])==2)
alpha_maiuscoli++;
}
tutti_alpha = alpha_minuscoli + alpha_maiuscoli;
printf("alpha_minuscoli: %d\n",alpha_minuscoli);
printf("alpha_maiuscoli: %d\n",alpha_maiuscoli);
printf("tutti_alpha: %d\n",tutti_alpha);
if (tutti_alpha < 26 )
printf("L'alfabeto inserito NON contiene solo caratteri dell'alfabeto\n");
}
}
By filling in the program, the following text is returned:
Inserisci l'alfabeto di criptazione (inglese):
abcdefghijklmnopqrstuvwxyz
I due alfabeti sono lunghi uguale
alpha_minuscole: 0 alpha_maiuscole:0
tutti_alpha: 0
L'alfabeto inserito NON contiene solo caratteri dell'alfabeto