如何生成一个含有随机数的字符串

生成一个固定字符串开头,但是以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打印出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值