首页 > 解决方案 > 如何将 printf 的输出转换为 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的输出:输出结果

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

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

如何轻松地将 my_printf 的输出转换为仅获取一个包含我的 mac 地址的 char 数组?

标签: csocketsnetworkingudp

解决方案


我相信您正在寻找与输出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);
}

在线尝试!


推荐阅读