您的位置:首页 > 其它

生成随机字符串

2012-08-15 21:29 344 查看
原文出处:http://www.rosoo.net/a/201009/10195.html

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

RandomString.h

#pragma once 
  
#define RdAllType  0x07  //大小写和数字 
#define RdNum      0x01  //数字 
#define RdLowercase 0x02 //小写 
#define RdUppercase 0x04 //大写 
static TCHAR szAllChar[] = _T("ABCDEFGHIJKLMNOPQRSTUVWXYZa
bcdefghijklmnopqrstuvwxyz0123456789"); 
 
bool fnRandomString(const int nLeng, TCHAR *RandStringInput, const int nType);

RandomString.cpp

#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下编译通过。



其他精彩博文:

http://www.cnblogs.com/suny2006/archive/2006/12/01/578855.html

http://www.imkevinyang.com/2009/08/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%89%BE%E5%87%BA%E4%B8%8D%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9D%A1%E7%9B%AE.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: