将随机数插入到数组中,其中每个值都是通过 for 循环输入的


//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] != ''; 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 循环中时,当然,rand_NumOut 放在数组中的每个字符之后,而在循环之外时,我无法将其放置在数组的内容中。

建议?

有更好的方法来反转字符串,但除此之外,当你返回usrPass的长度时,你会在函数的末尾丢弃newPass,所以你不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;
}

看它跑!

在 for 循环的末尾只需添加行

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

最新更新