//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
}