生成随机字符串

估摸着以后极有可能使用到,于是写了一个生成随机字符串的函数。可以自定义生成规则,生成字符串长度。模仿了MS的函数风格,生成规则使用宏的或且规则,返回值使用了布尔型。这里使用布尔返回可能作用不大。直接贴代码吧,同样是两个文件。


 
  
#pragma once

#define RdAllType 0x07 // ′óD?D′oíêy×?
#define RdNum 0x01 // êy×?
#define RdLowercase 0x02 // D?D′
#define RdUppercase 0x04 // ′óD′
static TCHAR szAllChar[] = _T( " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 " );

bool fnRandomString( const int nLeng, TCHAR * RandStringInput, const int nType);




// 注释用了中文,插件粘贴对中文支持不好:

#define RdAllType 0x07 // 大小写和数字
#define RdNum 0x01 // 数字
#define RdLowercase 0x02 // 小写
#define RdUppercase 0x04 // 大写


 
  
#include " stdafx.h "
#include
" RandomString.h "
#include
< stdlib.h >
#include
< time.h >

bool fnRandomString( const int nLeng, TCHAR * RandStringInput, const int nType)
{
if ( 0 == nLeng)
{
return true ;
}
if (nLeng < 0 )
{
return false ;
}

srand((unsigned
int )time(NULL));
bool bRet = false ;
int nMin = 0 ;
int nMax = 62 ;
switch (nType & RdAllType)
{
case RdAllType:
break ;
case RdNum:
nMin
= 52 ;
break ;
case RdNum | RdLowercase:
nMin
= 26 ;
break ;
case RdNum | RdUppercase:
nMin
= 26 ;
break ;
case RdUppercase:
nMax
= 25 ;
break ;
case RdUppercase | RdLowercase:
nMax
= 51 ;
break ;
case RdLowercase:
nMin
= 26 ;
nMax
= 51 ;
break ;
default :
return false ;
break ;
}


int nRange = nMax - nMin;
if (nType == (RdNum | RdUppercase))
{
int nNum = 0 ;
for ( int t = 0 ; t <= nLeng; t ++ )
{
nNum
= nMin + rand() % nRange;
if (nNum < 52 )
{
nNum
-= 26 ;
}
RandStringInput[t]
= szAllChar[nNum];
}
}
else
{
for ( int t = 0 ; t <= nLeng; t ++ )
{
RandStringInput[t]
= szAllChar[nMin + rand() % nRange];
}
}

// int tt = 0;
// while (RandStringInput[tt])
// {
// printf("%c ", RandStringInput[tt]);
// tt++;
// }

return true ;
}


VS2010下编译通过。

转载于:https://www.cnblogs.com/rogee/archive/2011/05/10/2041810.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值