从UUID对象中的字段构造字符串

时间:2013-09-26 11:41:55

标签: c string uuid

我有以下用于打印UUID的代码,该代码可以正常工作:

void puid(uuid_t u)
{
    int i;

    printf("%8.8x-%4.4x-%4.4x-%2.2x%2.2x-", u.time_low, u.time_mid,
    u.time_hi_and_version, u.clock_seq_hi_and_reserved,
    u.clock_seq_low);
    for (i = 0; i < 6; i++)
        printf("%2.2x", u.node[i]);
    printf("\n");
}

示例输出:

22b31d0d-4814-56e9-ba30-6c23d328deaf

我如何构建一个char字符串来保存上面的输出?

3 个答案:

答案 0 :(得分:1)

使用sprintf()

int sprintf ( char * str, const char * format, ... );

将格式化数据写入字符串

使用与printf上使用的格式相同的文本组成一个字符串,但不是打印,而是将内容作为C字符串存储在str指向的缓冲区中。

答案 1 :(得分:1)

怎么样:

char uuid[40];

sprintf(uuid, "%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x", 
u.time_low, u.time_mid, u.time_hi_and_version, u.clock_seq_hi_and_reserved,
u.clock_seq_low, u.node[0], u.node[1], u.node[2], u.node[3], u.node[4], u.node[5]);

printf("%s\n", uuid);

答案 2 :(得分:0)

UUID总是 36个字符。所以声明一个37个字符的char数组。

并使用sprintf()来形成字符串。

参见定义部分。

http://en.wikipedia.org/wiki/Universally_unique_identifier