【发布时间】:2021-10-10 11:17:45
【问题描述】:
尝试打印数组元素,如下所示
typedef struct Info
{
char MacAdd[2];
} Info;
char MAC[100];
sprintf(MAC, "%x:%x%c", Info->MacAdd[0], Info->MacAdd[1],'\0');
printf("MAC %s",MAC);
得到的输出是 --> ffffff98:ffffffa4
如何获得类似 ---> 98:a4 的输出
【问题讨论】:
-
将
MacAdd重新声明为unsigned。 -
Info->MacAdd是如何定义的?从输出来看,看起来这些是带负值的有符号整数?顺便说一句,您不需要空终止,sprintf无论如何都会这样做(除非您想要重复的空字符)。你觉得还是不错的... -
您的
sprintf呼叫中不需要%c或'\0'。sprintf会为您解决这个问题。 -
要始终打印两个字符,即使是个位数的值,请尝试
%.2x或%02x。 -
更新了问题,请检查一下