生成一个固定字符串开头,但是以6位的随机数(每一位为0~F)结尾的字符串,其中以"-"来连接两者。例如:“demo-8B2FCC”
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
void get_rand(char *dest)
{
int i = 0;
strcpy(dest,"demo-");
srand((unsigned)time(NULL));
for (i=0; i<6; i++)
{
int random = rand()%16;
char tmp = random>=10?(random-10+65):(random+48);//65-'A';48-'0'
sprintf(dest,"%s%c",dest,tmp);//* 用sprintf函数将dest和tmp输出到字符数组temp的buffer中 */
}
}
int main()
{
char temp[12];
get_rand(temp);
printf("%s",temp);
return 0;
}
rand()函数可以产生一个伪随机数,它是根据一个数(种子seed)为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数。
当计算机正常开机后,这个种子的值是固定的,但是C提供了 srand()函数,它的原形是void srand( int a) ,其功能是初始化随机产生器——rand()函数的初始值,即把种子的值改成a。
利用srand((unsigned)(time(NULL))可以生成随机器的种子,因为每一次运行程序的时间是不同的,time() 函数的功能是返回从1970/01/01到现在的秒数,在unix中是国际标准时间公元1 9 7 0年1月1日0 0 : 0 0 : 0 0以来经过的秒数。这种秒数是以数据类型time_t表示的,可以用%ld打印出来。