首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

类型转换的有关问题

2012-02-11 
类型转换的问题C/C++ code/*分析ethernet的包头*/eth_head (struct ether_header *)packet/*获得源MAC

类型转换的问题

C/C++ code
    /*分析ethernet的包头*/    eth_head = (struct ether_header *)packet;        /*获得源MAC地址*/    hwaddr = (unsigned char *)eth_head->ether_shost;//    strcpy(ipinfo->src_mac, hwaddr);   //我想把正常的物理地址的形式写入ipinfo结构体中的src_mac(char *类型的)    printf("SMAC[");                     //中,但是发现这样直接strcpy是不行的!空白,请问该怎么该     fprintf(fp,"SMAC[");    for(i=0;i < ETHER_ADDR_LEN - 1;i++)    {           printf("%02x:", hwaddr[i]);        fprintf(fp,"%02x:", hwaddr[i]);    }       printf("%02x] ",hwaddr[i]);    fprintf(fp,"%02x] ", hwaddr[i]);


[解决办法]
这样内存会越界的吧,没有'\0'
[解决办法]
format一下,mac地址都是00:00:00:00:00:00格式的
[解决办法]
直接strcpy?hwaddr是6字节,又不是字符串
如果src_mac也是类似的格式,用memcpy
如果是字符串格式,sprintf转一下
[解决办法]
直接memcpy6个字节就可以了,mac地址不是字符串
[解决办法]
for (int i = 0; i < 6; i++)
{

}

热点排行