【发布时间】:2021-03-25 16:18:44
【问题描述】:
这是我的代码,我想用键“div”输入字符串“adiva fiqri” 但我希望键是“divdi vdivd”(空格看起来像字符串输入)但我的新键跟随字符串(包括空格)“divdivdivdi”
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
void capital(int i, int j, char str[100]){
//converting entered string to Capital letters
for(i=0,j=0;i<strlen(str);i++)
{
str[j]=toupper(str[i]);
j++;
}
str[j]='\0';
return str[j];
}
int main()
{
int i,j,k,numstr[100],numkey[100],numcipher[100];
char str[100],key[100], newKey[100];
printf("Enter a string : ");
gets(str);
//converting entered string to Capital letters
/*
for(i=0,j=0;i<strlen(str);i++)
{
if(str[i]!=' ')
{
str[j]=toupper(str[i]);
j++;
}
}
str[j]='\0';
printf("Entered string is : %s \n",str);
*/
capital(i, j, str);
printf("Entered string is : %s \n",str);
//Storing string in terms of ascii
for(i=0;i<strlen(str);i++)
{
numstr[i]=str[i]-'A';
}
//masukan kunci
printf("Enter a key : ");
gets(key);
//converting entered key to Capital letters
for(i=0,j=0;i<strlen(key);i++)
{
key[j]=toupper(key[i]);
j++;
}
key[j]='\0';
//Assigning key to the string
for(i=0;i<strlen(str);)
{
for(j=0;(j<strlen(key))&&(i<strlen(str));j++)
{
numkey[i]=key[j]-'A';
i++;
}
}
//enkripsi
for(i=0;i<strlen(str);i++)
{
numcipher[i]=numstr[i]+numkey[i];
if(numcipher[i]>25)
{
numcipher[i]=numcipher[i]-26;
}
}
//generating new key
for(i = 0, j = 0; i < strlen(str); ++i, ++j){
if(j == strlen(key))
j = 0;
newKey[i] = key[j];
}
//hasil
printf("New Key : %s \n", newKey);
printf("Vigenere Cipher text is : ");
for(i=0;i<strlen(str);i++)
{
printf("%c",(numcipher[i]+'A'));
}
printf("\n");
}
这是我的代码,我想用键“div”输入字符串“adiva fiqri” 但我希望键是“divdi vdivd”(空格看起来像字符串输入)但我的新键跟随字符串(包括空格)“divdivdivdi”
【问题讨论】:
-
您刚刚在同一文本中发送了两次垃圾邮件。请添加 more 详细信息,而不仅仅是相同的垃圾。更详细地解释正在发生的事情以及我们应该看的地方。删除与当前问题无关的已注释掉的代码。
-
"adiva fiqri"with key:"div"将加密为"dldyi alyml"请参阅Vigenère cipher -
@davidC.Rankin 怎么样?你能纠正我的代码吗?