【发布时间】:2020-01-28 23:47:15
【问题描述】:
我正在尝试编写一个保留空格的 Vigenere Cipher (in 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');
}
【问题讨论】:
-
这段代码有什么问题?当前输出与您尝试的输出有何不同?
-
if (isalpha(cipherText)) { cipherText = … }— 仅在字符是字母时才转换字符(但无论如何都打印)。