我对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地址的有效性答案 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来检查两个十六进制数字(使用isxdigit
或0123456789abcdefABCDEF
中的简单查找)后跟:
(或-
)重复六次(最后一组除外)或四个十六进制数字后跟.
重复三次(最后一组除外)。
尝试自己编写代码。如果您遇到问题,请使用您的代码和您遇到的问题发布新的非常具体的问题。
1:为此,你没有。