如何将 printf 的输出转换为 char?

How to convert the output of a printf to a char?

我正在尝试将 printf 的输出转换为之后仅获取一个 char 数组。

 my_printf("%02x:%02x:%02x:%02x:%02x:%02x", gnetif.hwaddr[0],gnetif.hwaddr[1],gnetif.hwaddr[2],gnetif.hwaddr[3],gnetif.hwaddr[4],gnetif.hwaddr[5]);

您可以在此处查看 putty 上的输出:Result of output

我想将其转换为字符,然后使用 STM32 中的 sendto() 发送到我的计算机。例如,我有一个 python 脚本,我在其中发送 "MAC",它会回答我 "The mac address".

sendto(sock,/*Mycharwithmacaddress here*/,2,0,&from,fromlen);

我如何轻松地将 my_printf 的输出转换为仅包含我的 mac 地址的字符数组?

我相信您正在寻找 snprintf,它与 printf 类似,只是输出存储在数组中而不是打印出来。 snprintf 可以这样使用:

snprintf(char_array, size_of_char_array, “text to print to array such as the MAC address”);

这是一个最小的例子:

#include <stdio.h>

void myfunc(char[]);

int main(void)
{
    char arr[100] = {0};
    snprintf(arr, 100, "%02x:%02x:...", 12, 35);
    myfunc(arr);
}

void myfunc(char arr[])
{
    puts(arr);
}

Try it online!