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-loop 中时,当然rand_NumOut是放在数组中的每个 char 之后,而在循环之外,我不能将它放在数组的内容中。

建议?

4

2 回答 2

3

有更好的反转字符串的方法,但除此之外,newPass当您返回 的长度时,您将在函数末尾丢弃,因此您不附加到数组usrPass并不重要。rand_NumOutchar

如果您只想将随机数发送到标准输出,请在语句cout << rand_NumOut;之前添加。return

也许更好的方法是使用 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;
}

看它跑!

于 2012-05-05T04:51:23.040 回答
1

for循环的末尾只需添加行

if(usrPass[i+1]=='\0')
{
//code to insert rand_NumOut
//output rand_NumOut
}
于 2012-05-05T04:50:40.057 回答