产生随机字符串
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; }
相关文章推荐
- JAVA--抽象工厂模式--设计模式二
- Laravel 4 入门三讲(上)laravel 在启动的时候到底做了什么?
- java和ibatis调用存储过程并取得返回值
- Entity Framework 中的Code First 中引入数据库函数
- 信号处理(一)——能量信号与功率信号的区别
- 杂货
- pip自动生成requirements.txt依赖关系清单
- HDU 5438 Ponds
- Mlond的到来(android)
- DLL+ ActiveX控件+WEB页面调用例子
- ACM-ICPC是什么样的比赛
- Redis键时间老化的测试
- C++ using关键字作用
- MyBatis+MySQL数据库操作小技巧
- Linux用户空间与内核空间
- 开源的新浪微博 Android 客户端:Aisen源码项目
- javascript Windouw 转自 http://www.cnblogs.com/kissdodog/archive/2013/01/01/2841464.html
- DBHelper
- 面试题13:在O(1)时间删除单链表结点
- Sicily-1001. Alphacode