验证MAC地址

时间:2013-07-04 13:56:12

标签: c

我对MAC地址验证有疑问:

这些MAC地址有效:

00:0A:02:0B:03:0C
ff:ff:ff:ff:ff:ff

但是,这些地址无效:

00:0A:02:0k:03:0j
00:0A:02_00:03?0C

如何使用C?

检查MAC地址的有效性

2 个答案:

答案 0 :(得分:3)

检查每个字符是否适合其位置的简单循环应该足够了:

#include <stdbool.h>
#include <ctype.h>

bool isMAC(char *s) {
    for(i = 0; i < 17; i++) {
        if(i % 3 != 2 && !isxdigit(s[i]))
            return false;
        if(i % 3 == 2 && s[i] != ':')
            return false;
    }
    if(s[17] != '\0')
        return false;
    return true;
}

答案 1 :(得分:0)

除非你想要使用正则表达式库 1 的重量,否则只需构建一个简单的FSM来检查两个十六进制数字(使用isxdigit0123456789abcdefABCDEF中的简单查找)后跟:(或-)重复六次(最后一组除外)或四个十六进制数字后跟.重复三次(最后一组除外)。

尝试自己编写代码。如果您遇到问题,请使用您的代码和您遇到的问题发布新的非常具体的问题。

1:为此,你没有。