如题,我想生成一个8到14位的随机用户名,首位不能为数字,代码如下,但是生成的用户名中偶尔会包含“↕”类的字符,不知道是哪里出错了,请大侠们指点一下!
//*******************************部分代码***********************************
CString CUsersPropertyPage::GetRandUser(void)
{
char chrArray[36]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
CString strRet;
srand((unsigned)time(NULL));
strRet=chrArray[10+rand()%34];
for(int i=0;i<(8+rand()%14);i++)
{
strRet=strRet+chrArray[rand()%35];
}
return strRet;
}
//*******************************代码结束***********************************请问是哪里出错了?谢谢!
//*******************************部分代码***********************************
CString CUsersPropertyPage::GetRandUser(void)
{
char chrArray[36]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
CString strRet;
srand((unsigned)time(NULL));
strRet=chrArray[10+rand()%34];
for(int i=0;i<(8+rand()%14);i++)
{
strRet=strRet+chrArray[rand()%35];
}
return strRet;
}
//*******************************代码结束***********************************请问是哪里出错了?谢谢!
10+33=43;
已经超出了chrArray的范围。strRet=strRet+chrArray[rand()%35];
在超出范围的情况下,还要再增加,范围更大。
再请问下,把代码改成如下内容,是否正确?
//*******************************部分代码***********************************
CString CUsersPropertyPage::GetRandUser(void)
{
char chrArray[36]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
CString strRet;
srand((unsigned)time(NULL));
strRet=chrArray[rand()%26+10];
for(int i=0;i<(rand()%7+8);i++)
{
strRet=strRet+chrArray[rand()%35];
}
return strRet;
}
//*******************************代码结束***********************************
CString CUsersPropertyPage::GetRandUser(void)
{
char chrArray[36]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
CString strRet;
srand((unsigned)time(NULL));
strRet=chrArray[rand()%26+10];
int nNum = (rand()%7+8); //先把个数求出来,要不每次判断时都求一次,就不同了
for(int i=0;i<nNum;i++)
{
strRet=strRet+chrArray[rand()%36];//%36才对,这样才能取到全部0--35,要不最后一个字母永远取不到
}
return strRet;
}