您的位置:首页 > 其它

产生随机字符串

2016-04-25 10:08 162 查看

1:简单的随机字符串

const char CCH[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //62
void GetRandstr(TCHAR *szPswd, int ilen)
{
srand((unsigned)time(NULL));
for (int i = 0; i != ilen; ++i)
{
int x = rand()%(sizeof(CCH)-1);//x={0~61}
szPswd[i] = CCH[x];
}
return ;
}

//调用
TCHAR szPswd[64] = {0};
GetRandstr(szPswd, 32);


2:稍复杂些的字符串

//产生一个包含字母、数字、以及其他字符的字符串
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CN  8 //大写英文字母个数
#define LN  8 //小写英文字母个数
#define NN  8 //数字个数
#define SN  8 //符号个数
char t[CN+LN+NN+SN+1];
char S[33]="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
char *randstr() {
int i;
for (i=0;i<CN;i++) sprintf(t         +i,"%c",'A'+rand()%('Z'-'A'+1));
for (i=0;i<LN;i++) sprintf(t+CN      +i,"%c",'a'+rand()%('z'-'a'+1));
for (i=0;i<NN;i++) sprintf(t+CN+LN   +i,"%c",'0'+rand()%('9'-'0'+1));
for (i=0;i<SN;i++) sprintf(t+CN+LN+NN+i,"%c",S[rand()%32]          );

int  n=CN+LN+NN+SN-1;
for (i=n;i>0;i--)
{
int a=i-1;
int b=rand()%i;
if (a!=b)
{
char tc=t[a];
t[a]=t[b];
t[b]=tc;
}
}
return t;
}
int main() {
srand(time(NULL));
for (int i=0;i<5;i++)
printf("%s\n",randstr());
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: