2016-09-20 108 views
-2

這是從Keyshanc加密算法取出。 https://github.com/Networc/keyshanc結束while循環爲字符替換

我的問題是:如何可能操縱具有與從密碼陣列所選擇的密鑰多重加密輸出該主要方法?

我不能就在年底打出來的編碼循環。

int main() 
{ 
    string password[] = {"JaneAusten", "MarkTwain", "CharlesDickens", "ArthurConanDoyle"}; 

    for(int i=0;i<4;++i) 
    { 
     char keys[95]; 

     keyshanc(keys, password[i]); 

     char inputChar, trueChar=NULL; 
     cout << "Enter characters to test the encoding; enter # to quit:\n"; 
     cin>>inputChar; 

     for (int x=0; x < 95; ++x) 
     { 
      if (keys[x] == inputChar) 
      { 
       trueChar = char(x+32); 
       break; 
      } 
     } 

     while (inputChar != '#') 
     { 
      cout<<trueChar; 
      cin>>inputChar; 
      for (int x=0; x < 95; ++x) 
      { 
       if (keys[x] == inputChar) 
       { 
        trueChar = char(x+32); 
        break; 
       } 
      } 

     } 
    } 
    return 0; 
} 

回答

0

您正在兩個地方進行輸入,因此您必須進行兩項測試。

當您在while循環中時,必須跳出while循環,並跳出for(;;)循環。您可以設置i=5;迫使for(;;)循環停止。

for (int i = 0; i<4; ++i) 
{ 
    char inputChar, trueChar = 0; 
    cout << "Enter characters to test the encoding; enter # to quit:\n"; 

    cin >> inputChar; 

    if (inputChar == '#') //<== ADD THIS 
     break; 

    while (inputChar != '#') 
    { 
     cout << trueChar; 
     cin >> inputChar; 

     if (inputChar == '#') //<== ADD THIS to break out of for(;;) loop 
     { 
      i = 5; 
     } 

    } 
} 

此外trueCharinputChar應該初始化爲0NULL(雖然這是同樣的事情在這一點)。如果未初始化,請勿打印trueChar

if (trueChar) 
    cout << trueChar;