gpt4 book ai didi

C语言凯撒密码

转载 作者:行者123 更新时间:2023-11-30 15:36:51 25 4
gpt4 key购买 nike

我用 c 语言编写了这段代码,以利用凯撒密码算法,但是如果我输入较长的句子,它会在末尾给出奇怪的符号,例如我在输出窗口中得到了这个:

输入文本:此程序是凯撒密码的示例

输入表格:ABCDEFGHIJKLMNOPQRSTUVWXYZ

输入 key :3

WKLVBSURJUDPBLVBDQBH DPSOHBRIBFDHVDUBFLSKHUCä

你想解密回来吗?如果您想输入 1:1

该程序是凯撒密码的示例。▬

按任意键继续。 。 .

非常感谢任何帮助

void encrypt (char table[],char entext[],char text[],int key)
{
int i,j;
int k = strlen(table);
for (i=0;i<strlen(text);++i)
{
if (text[i]!='\0')
{
for (j=0; text[i] != table[j] ;j++);
entext[i] = table[(j+key)%k];
}
}
entext[i+1] = '\0';
puts(entext);
}

void decrypt (char table[],char detext[],char text[],int key)
{
int i,j;
int k = strlen(table);
for (i=0;i<strlen(text);++i)
{
if (text[i]!='\0')
{

for (j=0; text[i] != table[j] ;j++);
{
int temp = j - key;
if (temp < 0)
{
j = k + temp;
detext[i] = table[j];
}

else
detext[i] = table[j-key];
}
}
}
detext[i+1] = '\0';
puts(detext);
}


int main()
{
char table[100],text[100],entext[100],detext[100];
int i,j,key,choice;
printf("Enter the text : ");
gets(text);
printf("Enter the table : ");
gets(table);
printf("Enter the key : ");
scanf("%d",&key);
encrypt(table,entext,text,key);
printf("Do you want to decrypt it back? Enter 1 if you want to : ");
scanf("%d",&choice);
if (choice == 1)
{
decrypt(table,detext,entext,key);
}
system("pause");
return 0;

}

最佳答案

你在行尾放置分号,这样你的循环就不会执行任何操作

for (j=0; text[i] != table[j] ;j++);

如果text中的table中缺少符号,例如空格或'\n'-换行符,那么您就错了。

关于C语言凯撒密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com