您好!
我正在尝试运行一个函数、该函数在其他方面经过测试、并且运行良好。 但是、如果我在 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;
}
。