C ++密码生成器有空格

时间:2016-09-16 00:36:23

标签: c++

所以我创建了一个基本的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;
 }

1 个答案:

答案 0 :(得分:1)

您生成的密码不包含空格,而是空字符'\0'

原因是randNum使用以null结尾的字符串进行初始化,这意味着randNum不仅包含您在文字中写入的字符,还包含\0最后。

因此,sizeof(randNum)是68,而不是67,正如您所期望的那样。有时你会在生成循环中选择最后一个字符。

Windows命令提示符将'\0'打印为空格。