功能只允许使用字母并存储其等效数字

时间:2015-04-17 14:57:55

标签: c

void keyfunction()
{
    int i=0,j=0,flag=1,ikey[15],keylength;
    char ch,chc,ckey[15];
    while(flag)
    {
        printf("Enter the length of key\n");
        scanf("%d",&keylength);
        printf("Enter the key\n");
        flag=0;
        for(j=0;j<keylength;j++)
        {
            scanf("%c",&ckey[j]);
        }
        j=0;
        for(j=0;j<keylength;j++)
        {
            chc=ckey[j];
            if(isalpha(chc))
            {
                continue;

            }
            else
            {
                printf("key should have only alphabets\n");
                flag=1;
                break;
            }
        }
    }
    while(1)
    {
        ch=ckey[i];
        if(isupper(ch))
        {
            ch=tolower(ch);
        }
        ikey[i]=ch-'a'+1;
        i++;
        if(keylength==i)
        {
            break;
        }
    }
    printf("key is accepted\n");
    while(i<keylength)
    {
        printf("%c",ckey[i]);
    }
    getch();
}

此函数应询问密钥长度并仅在其具有字母表时接受密钥,并且ckey数组存储输入密钥的字符。 ikey数组在ckey中存储字符的相应int值,即如果ckey有a,b,c,d,则ikey存储1,2,3,4。< / p>

任何人都可以解释我在哪里错了吗?

1 个答案:

答案 0 :(得分:1)

更改此行

scanf("%c",&ckey[j]);

scanf(" %c",&ckey[j]);

打印时,您不会增加索引值

更改此

while(i<keylength)
{
    printf("%c",ckey[i]);
}

i=0;   // start index with zero
while(i<keylength)
{
    printf("%c",ckey[i]);
    i++;   //increment index
}
相关问题