我有以下用于打印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字符串来保存上面的输出?
答案 0 :(得分:1)
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()
来形成字符串。
参见定义部分。