产生随机字符串

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值