2012-05-05 38 views
0
//Encryption of pass-phrase 
char passReverse(char usrPass[]){ 
    char newPass[pSize]; 
    int value; 
    int randNum; 
    int rand_NumOut; 

    //Random number generation 
    srand(time(0)); 
    randNum = rand(); 
    rand_NumOut = ((randNum %12)+2); 
    //Reversing array for-loop 
    for (int i=0; i<pSize && usrPass[i] != '\0'; i++){ 
     char letter = usrPass[i]; 
     newPass[i] = letter; 
     int maxVal = strlen(usrPass); 
     if (maxVal >=0){ 
      newPass[i] = usrPass[(maxVal-1)-i]; 
     } 
     cout << newPass[i]; 
     value = i; 
    } 
    return value; 
} 

理想的是rand_NumOut將被放置在newPass []最後的循環後立即輸入的每個值的數組。插入一個隨機數到其中正通過一個for循環

我所遇到的問題是擺在for -loop的時候,當然,rand_NumOut被放置在陣列中的每個字符後,當循環之外,我不能將它放在數組的內容。

對此提出建議?

+0

定義'pSize'在哪裏? – jedwards

+1

如果密碼是「密碼」,隨機數是「x」,您是否希望輸出爲「drowssapx」? – jedwards

+0

正確。它反轉了用戶輸入的短語,到目前爲止,我想rand_NumOut被放置在newPass [] – wanderbread

回答

1

循環的最後只需將線

if(usrPass[i+1]=='\0') 
{ 
//code to insert rand_NumOut 
//output rand_NumOut 
} 
3

有扭轉一個字符串的好辦法,但除此之外,你在函數結束時丟棄newPass當你返回usrPass的長度,因此,您不會將rand_NumOut添加到char陣列並不重要。

如果您只是想將隨機數發送到stdout,則在return語句前添加cout << rand_NumOut;

也許是更好的辦法是使用C++的類std::string

#include <cstdlib> 
#include <ctime> 
#include <iostream> 
#include <sstream> 

std::string passReverse(const std::string& userPass) 
{ 
    srand(time(0)); 
    const int randNum = rand(); 
    const int rand_NumOut = randNum % 12 + 2; 

    std::string reversed(userPass.rbegin(), userPass.rend()); 

    std::ostringstream oss; 
    oss << reversed << rand_NumOut; 
    return oss.str(); 
} 

int main() 
{ 
    std::cout << passReverse("password") << std::endl; 
} 

See it run!

相關問題