如何将字符串中的mac地址用sscanf读取到数组里面?

piginthetree 2009-06-04 11:07:33
#include <stdio.h> 

typedef unsigned char uint8;

int main()
{
char szMAC[18]; //fa:a0:b0:00:3e:4d
uint8 mac[6];

strcpy(szMAC,"fa:a0:b0:00:3e:4d");
sscanf("%02x:%02x:%02x:%02x:%02x:%02x",
&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
puts(szMAC);
printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return 0;
}

这段代码输出是:
fa:a0:b0:00:3e:4d
f4:3f:83:0:24:22

问题出在哪儿?
...全文
666 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
piginthetree 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lylm 的回复:]
改成sscanf(szMAC,"%02x:%02x:%02x:%02x:%02x:%02x",
        &mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
[/Quote]哦 原来是漏掉了 太粗心了 谢谢
lylm 2009-06-04
  • 打赏
  • 举报
回复
完整程序
#include <stdio.h> 
#include <string.h>
typedef unsigned char uint8;

int main()
{
char szMAC[18]; //fa:a0:b0:00:3e:4d
uint8 mac[6];

strcpy(szMAC,"fa:a0:b0:00:3e:4d");
sscanf(szMAC,"%02x:%02x:%02x:%02x:%02x:%02x",
&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
printf("%02x:%02x:%02x:%02x:%02x:%02x\n",
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return 0;
}
lylm 2009-06-04
  • 打赏
  • 举报
回复
改成sscanf(szMAC,"%02x:%02x:%02x:%02x:%02x:%02x",
&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);
piginthetree 2009-06-04
  • 打赏
  • 举报
回复
up

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧