我正在尝试编写替换密码,但是它的一部分,特别是如果插入的字母表仅由文本字符“a ... z”组成,它会看到我的那个,对我不起作用。你能告诉我为什么 isalpha 函数(alfabeto_sostitutivo)虽然我插入了普通字母,但结果却是 0?提前感谢您花费的时间。
#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");
}
}
通过填写程序,返回以下文本:
Inserisci l'alfabeto di criptazione(英文):
abcdefghijklmnopqrstuvwxyz
我由于 alfabeti sono lunghi uguale
alpha_minuscole: 0 alpha_maiuscole:0
tutti_alpha: 0
L'alfabeto inserito NON contiene solo caratteri dell'alfabeto