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>
任何人都可以解释我在哪里错了吗?
答案 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
}