-1

我有一个关于 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 地址的有效性?

4

2 回答 2

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;
}
于 2013-07-04T14:13:44.063 回答
0

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

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

1:为此,你不知道。

于 2013-07-04T14:01:18.840 回答