所以我创建了一个基本的c ++密码生成器,它会询问用户他们想要密码的时间长度,但是,对于某些密码,它会包含一个空格。 EX:密码长度为8有时会打印:$ 15 B2FD
这就是代码的样子。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
static const char randNum[] =
"0123456789"
"!@#$&"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
int size = sizeof(randNum);
int main() {
int length;
cout << "Enter length of password: ";
cin >> length;
srand(time(0));
cout << "Your password is: ";
for (int i = 0; i < length; i++) {
cout << randNum[rand() % size];
}
cout << endl;
system("pause");
return 0;
}
答案 0 :(得分:1)
您生成的密码不包含空格,而是空字符'\0'
。
原因是randNum
使用以null结尾的字符串进行初始化,这意味着randNum
不仅包含您在文字中写入的字符,还包含\0
最后。
因此,sizeof(randNum)
是68,而不是67,正如您所期望的那样。有时你会在生成循环中选择最后一个字符。
Windows命令提示符将'\0'
打印为空格。