/********方法一**********/
<br>#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/**
* Create random UUID
*
* @param buf - buffer to be filled with the uuid string
*/
char
*random_uuid(
char
buf[37] )
{
const
char
*c =
"89ab"
;
char
*p = buf;
int
n;
for
( n = 0; n < 16; ++n )
{
int
b =
rand
()%255;
switch
( n )
{
case
6:
sprintf
(p,
"4%x"
, b%15 );
break
;
case
8:
sprintf
(p,
"%c%x"
, c[
rand
()%
strlen
(c)], b%15 );
break
;
default
:
sprintf
(p,
"%02x"
, b);
break
;
}
p += 2;
switch
( n )
{
case
3:
case
5:
case
7:
case
9:
*p++ =
'-'
;
break
;
}
}
*p = 0;
return
buf;
}
void
main()
{
char
guid[37];
random_uuid(guid);
printf
(
"guid = %s\n"
, guid);
random_uuid(guid);
printf
(
"guid = %s\n"
, guid);
random_uuid(guid);
printf
(
"guid = %s\n"
, guid);
random_uuid(guid);
printf
(
"guid = %s\n"
, guid);
}
|
运行如下:
1
2
3
4
5
6
7
|
daniel@debian:~/src$ gcc getuuid.c
daniel@debian:~/src$ ./a.out
guid = a397a255-53be-41fc-996b-521413e9e22d
guid = 518e1f56-0857-49a7-a5d0-528277751b99
guid = 4aed583d-6a52-49d5-b668-8ead955f3c35
guid = b5c48cdd-6c11-453d-91b4-59cfce233d27
daniel@debian:~/src$
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/********方法二**********/
/*libuuid是一个用于生成UUID的C库,具体用法参考http://linux.die.net/man/3/libuuid,示例如下:*/
#include <stdio.h>
#include <uuid/uuid.h>
int
main(
int
argc,
char
**argv)
{
uuid_t
uuid
;
char
str[36];
uuid_generate(
uuid
);
uuid_unparse(
uuid
, str);
printf
(
"%s\n"
, str);
return
0;
}
在Linux下编译时需要链接
uuid
库
gcc -o
uuid
uuid
.c -luuid
在Ubuntu中,可以用下面的命令安装libuuid:
sudo apt-get install
uuid
-dev
|