您好!
我正在尝试运行一个函数、该函数在其他方面经过测试、并且运行良好。 但是、如果我在 uController 上运行该函数。 uController 将挂起 sprintf 语句。
此函数实际上合并了两个数组、这样一个数组保存一个字符串、而另一个数组保存十六进制字符。 如果我在 Linux 机器上进行仿真、此函数将非常有效。
char generated_Hostname (char *标头、unsigned char * macaddr、char * GeneratedHostName) { char hex_tmp[50]; unsigned char i; strcpy (GeneratedHostName,标头);//将主机名的标头(即 BECMS)复制到 GeneratedHostName 对于(i = 0;i < 4;i++){sprintf (&hex_tmp[i*2]、"%02x"、*(macaddr+i+2));}//转换从 MAC_Addr[2]开始到 MAC_Addr[5]的 macaddr 编号 strcat (GeneratedHostName、hex_tmp); 返回1; }
用户可以尝试简单地复制和粘贴以下代码、以快速查看函数本身的工作情况
#include #include #define HostNameHeader "TI_Device_" char generate_Hostname (char *标头、unsigned char * macaddr、char *主机名) { char hex_tmp[20]; unsigned char i; strcpy (主机名、标头); 对于(i = 0;i < 4;i++){sprintf (&hex_tmp[i*2]、"%02x"、*(macaddr+i+2));} strcat (hostname、hex_tmp); } int main (void) { char hostname[50]; unsigned char MAC_Addr[6]={0xE0、0xC0、0x01、0x00、0xAF、0x60}; Generate_Hostname (HostNameHeader、&MAC_Addr[0]、hostname); printf ("\n%s"、hostname); return 0; }
。