2

我有以下代码用于打印工作正常的 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 字符串来保存上述输出?

4

3 回答 3

1

使用 sprintf()

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

将格式化数据写入字符串

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

于 2013-09-26T11:47:45.933 回答
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);
于 2013-09-26T11:48:41.963 回答
0

UUID 始终为36 个字符长度。所以声明一个 37 个字符的 char 数组。

sprintf()用于形成字符串。

见定义部分。

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

于 2013-09-26T11:49:25.907 回答