sscanf用法
首先了解一下sscanf的语法规则:
实际例子
1.将mac地址按照其格式进行输出:
允许输入一位数的数字或者字母,最终为了显示美观,将字母变成大写,一位数变成两位数字进行输出,即用%2X格式输出。
2.取出MAC地址中的数字进行保存,因为MAC地址一共有12位数,因此一个字节存不下,需要使用两个字节进行存储。将sscanf得到的数组进行移位运算,保存完整的MAC地址。
代码如下:
//gcc 5.4.0
#include <stdio.h>
int main(void)
{
unsigned int u32high = 0;
unsigned int u32low = 0;
const char *f = "A:67:43:ed:2f:44";
unsigned char mac[6] = { 0 };
sscanf(f, "%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]);
u32high = ((mac[0] & 0x000000ff) <<24) | ((mac[1] & 0x000000ff) <<16) |
((mac[2] & 0x000000ff) << 8) | (mac[3] & 0x000000ff);
u32low = ((mac[4] & 0x000000ff) << 8) | (mac[5] & 0x000000ff);
printf("%x\n%x\n",u32high,u32low);
return 0;
}
这样就可以实现用sscanf输出指定MAC地址格式的数组啦,最后用两个字节进行存储MAC地址。