在C中验证MAC地址

时间:2017-03-01 12:09:23

标签: c validation

我需要验证给定的MAC地址是否有效。

我浏览了一些链接How do you validate that a string is a valid MAC address in C?

我按照上面的步骤进行操作,但它无法正常工作请帮助我。 这是我试过的。

#include <ctype.h>

int main(const char* mac) {
  int i = 0;
  int s = 0;
  mac = "11:11:11:11:11:11"

  while (*mac) {
    if (isxdigit(*mac)) {
      i++;
    }
    else if (*mac == ':' || *mac == '-') {
      if (i == 0 || i / 2 - 1 != s)
        break;
      ++s;
    }
    else 
      s = -1;
    ++mac;
  }
  return (i == 12 && (s == 5 || s == 0));
}

此代码运行正常,但我没有得到任何输出。 请帮帮我。

1 个答案:

答案 0 :(得分:1)

如果您使用您作为有效 C程序的一部分提供的链接中的代码,那么它将起作用。您需要通过stdio或传递参数来学习C天气的输入和输出方法,并处理来自main()的返回值

伪代码中,这可能如下所示:

#include <ctype.h>
int isValidMacAddress(const char* mac);

int main (int argc, char *argv[]) {
    mac = get-input;
    result = isValidMacAddress(mac);
    output-result(result);
}

int isValidMacAddress(const char* mac) {
    int i = 0;
    int s = 0;

    while (*mac) {
        if (isxdigit(*mac)) {
            i++;
        } else if (*mac == ':' || *mac == '-') {
            if (i == 0 || i / 2 - 1 != s)
                break;
            ++s;
        }
        else {
            s = -1;
        }
        ++mac;
    }
    return (i == 12 && (s == 5 || s == 0));
}

现在get-input部分可以请求用户类型,然后读取(研究scanf()),控制台上的某些值(标准输入),或者它可以从给定的参数中获取输入调用程序时main()

output-result部分可能只是将结果返回到调用环境,或者可能是将值(研究printf())打印到控制台(标准输出)。