C中的isalpha()函数无法读取

时间:2019-11-12 21:09:26

标签: c isalpha

我正在尝试编写替换密码,但是其中一部分,特别是如果插入的字母仅由文本字符“ 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

我应得的阿尔法贝蒂·索诺·拉古里亚

alpha_minuscole:0                                                                                       alpha_maiuscole:0

tutti_alpha:0

L'alfabeto inserito non contiene solo caratteri dell'alfabeto

1 个答案:

答案 0 :(得分:1)

  • isalpha(argument)ctype.h中声明的其他相关函数 如果参数满足条件,则返回非零(true) 描述,否则为零(假)。

由于您要检查lowerupper的大小写字符,因此ctype库已经定义了函数islower(argument)isupper(argument)。 您可以与isaplha函数一起使用它们,就像这样……

for (int c=0; alfabeto_sostituzione[c] != '\0'; c++)
      {
        if (isalpha(alfabeto_sostituzione[c]))
          {
            if(islower(alfabeto_sostituzione[c]))
              alpha_minuscoli++;
            else
              alpha_maiuscoli++;
          } 
      }