gpt4 book ai didi

c - 用 C 语言编写维吉尼亚密码(保留空格)

转载 作者:行者123 更新时间:2023-11-30 16:06:25 24 4
gpt4 key购买 nike

我正在尝试编写一个保留空格的维吉尼亚密码(c 语言)。因此,如果我收到一条简单的消息“你好,你好吗”,密码将采用这种形式“abcde fgh ijk lmn”,我想要的就是保留空格。我已经为此工作了一段时间。任何帮助,将不胜感激。

这是我的代码

void CipherText(char* plainText, char* cipherKey)
{
int keyLength = strlen(cipherKey);
char cipherText;

for(int i = 0; i < strlen(plainText); i++)
{

int cipherText = (unsigned char)plainText[i];

cipherText = ((int)plainText[i]-97+(int)tolower(cipherKey[i])-97)%26 + 'A';

putchar(cipherText);
}
putchar('\n');
}

最佳答案

在尝试转换(编码)字符之前测试该字符是否是字母。另外,不要使用数字作为字符代码 - 例如,使用 'a' 而不是 97。我删除了一些不必要的类型转换。我还使用 cipherText 而不是 (int)plainText[i],因为这样可以避免不需要的符号扩展。我还添加了一些空格;明智地使用空格会更容易阅读代码。

void CipherText(char* plainText, char* cipherKey)
{
int keyLength = strlen(cipherKey);
char cipherText;

for(int i = 0; i < strlen(plainText); i++)
{
int cipherText = (unsigned char)plainText[i];
if (isalpha(cipherText))
cipherText = (cipherText - 'a' + tolower(cipherKey[i]) - 'a') % 26 + 'A';
putchar(cipherText);
}
putchar('\n');
}

关于c - 用 C 语言编写维吉尼亚密码(保留空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59958767/

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