如何将 C 数组发送到等待一行中的 printf 格式的函数?

How to send an C Array to a function which waits for a printf format in one line?

我有一个包含如下十六进制值的数组:d3 8a f0 21 1e 1f e7 c3 a1 a4 47。 这个数组是一个结构的一部分,我想把它发送到另一个等待 printf 之类的函数的函数

send_array(arg1, arg2, "%s\n", array);

这里的问题是我无法为 send_array 函数提供此数组,并像往常一样使用 for 循环遍历数组。

通常这个函数是通过向它发送一个printf语句来使用的:

const char *message;
message = "This is a demo message";    
send_array(arg1, arg2, "%s\n", message);

哪个工作得很好。我无法修改函数以另一种方式处理数组。 有没有办法将数组中的内容转换为与第二个片段中的“消息”相同的形式?

我对C语言不是很熟悉,因为我习惯了高级语言。

希望有人能帮助我。

您可以sprintf()您的数组到一个字符缓冲区,然后发送该缓冲区。

int array[] = {0xd3, 0x8a, 0xf0, 0x21, 0x1e, 0x1f, 0xe7, 0xc3, 0xa1, 0xa4, 0x47};
char buffer[1000]; // large enough
char *b = buffer + sprintf(buffer, "%02x", array[0]);
for (unsigned i = 1; i < sizeof array / sizeof *array; i++) {
    b += sprintf(b, " %02x", array[i]);
}
send_array(arg1, arg2, "%s\n", buffer);

见代码running on ideone