1
我正在試圖製作一個Vigenere密碼。我的問題是我沒有得到預期的輸出。運行該程序時,它會提供以下輸出:HFNLP WPTLE。正確的輸出應該是:HFNLP YOSND。如何調試C中的Vigenere密碼?
我認爲問題在於modulo(mod)的使用不當。當我嘗試用變量i
圍繞密鑰(ABC)時,plainText中的空格(「」)也會包裝,直接影響包裝的結果。爲了獲得正確的輸出,我不會做什麼。
string plainText = "HELLO WORLD";
string keyword = "ABC";
for(int i = 0; i < strlen(plainText);i++)
{
int wrap = (int) strlen(keyword) % (int) strlen(plainText);
if(isalpha(plainText[i]))
{
int upper = 'A' + (plainText[i] + (toupper(keyword[i % wrap]))) % 26;
printf("%c", upper);
}
提示:你需要額外的數據塊來做到這一點。迭代必須以某種方式知道到目前爲止遇到了多少空間。有幾種方法可以跟蹤這一點。 – spectras
感謝您的幫助。 :) –