65,208
社区成员
发帖
与我相关
我的任务
分享
//产生一个包含字母、数字、以及其他字符的字符串
#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 *myrandstr() {
int i,n,a,b;
char tc;
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] );
n=CN+LN+NN+SN-1;
for (i=n;i>0;i--) {
a=i-1;b=rand()%i;
if (a!=b) {tc=t[a];t[a]=t[b];t[b]=tc;}
}
return t;
}
int main() {
int i;
srand(time(NULL));
for (i=0;i<10;i++) printf("%s\n",myrandstr());
return 0;
}
//iWQ*RG7r2)u'9lAJ9t2Vl03d)Ht"5-@/
//^dQPe_R>00Z6H6x3+klGS2=Ewqf/86^)
//u>2oR=55?aaj4OXG0:9rX#6+Dv6DDt-=
//5Ym?X9_'qDDoe#p5v2M[S8!p8He3I9)+
//81w{`951ScIy=92K@ZMJ[p%@qkdLb7Y}
//2oIRnxw6~:84MF;~C|]msWr1Q~9Jb88=
//1IV}4x,TpheG[3J4T}g"Pc"3uV]q022!
//mH12~+81Kipri5QYUUd|:Oo7B(\e50(`
//laHaY=IyIby!J5b?6}Vy25]8B"65%3E"
//2>W|33hQQ2vA5ws02J<TkS!1Rlik[[]!
//