我想编写一个代码来检查 MAC 地址的正确性。输入应该看起来像这样D7:6E:F4:30:17:2B
。我正在考虑使用函数isdigit()
和isupper()
. 不知道如何让用户可以写“:”符号并阻止他写其他符号。
if(user input is 13:4F:60:AC:7O:DE)
... all good
if(user input is 14:a]:!o:0L)
... wrong input, retry
编辑 根据@Woodrow Barlow的回答,我编写了该代码:
int mac_address()
{
int is_valid = 1;
printf("MAC ADDRESS:");
fgets(mac_addr, sizeof(mac_addr), stdin);
if (mac_addr[sizeof(mac_addr) - 1] != '\0')
{
is_valid = 0;
}
else if (ether_aton(mac_addr) == NULL)
{
is_valid = 0;
// input isn't recognizable as a MAC address
}
if (is_valid == 1)
{
system("clear");
printf("valid!\n");
printf("%s\n", mac_addr);
return license_menu();
}
else {
printf("invalid!\n");
fflush(stdin);
return 1;
}
}