产生随机字符串

来源:互联网 发布:如何评价宋思明知乎 编辑:程序博客网 时间:2024/05/22 03:07

1:简单的随机字符串

const char CCH[] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //62void 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;}
0 0
原创粉丝点击