其他分享
首页 > 其他分享> > C语言检查IP、MAC合法函数 实用 码住喽!

C语言检查IP、MAC合法函数 实用 码住喽!

作者:互联网

一、简单说说

IP合法检验函数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

#define  FALSE     0
#define  TRUE      1


bool ip_check(const char *ip)
 {
    int dots = 0;              //字符 . 的个数
    int setions = 0;           //ip每一部分总和(0-255)
    char ip_temp[16+1] = {0};  //IP缓存
    char *token = NULL;        //分割的字串

    strncpy(ip_temp, ip, sizeof(ip_temp));//IP备份

    token = strtok(ip_temp, ".");  //获取第一个子字符串

    while (token != NULL)  //继续获取其他的子字符串
    {
        printf("token:<%s>\n",token);
        if (strlen(token) > 3)  //每一个IP段长度不能大于3
        {
            return FALSE;
        }
        token = strtok(NULL, ".");
    }

    if (NULL == ip || *ip == '.')
    {
        return FALSE;  //排除输入参数为NULL, 或者一个字符为'.'的字符串
    }

     while (*ip)
    {
         if (*ip == '.')
        {
             dots ++;
             if (setions >= 0 && setions <= 255)  //检查ip是否合法
             {
                 setions = 0;
                 ip++;
                 continue;
             }else
             {
                 return FALSE;
             }
        }
         else if (*ip >= '0' && *ip <= '9')
         { /*判断是不是数字*/
             setions = setions * 10 + (*ip - '0'); /*求每一段总和*/
         } else
             return FALSE;
         ip++;
     }

     if (setions >= 0 && setions <= 255)  /*判断IP最后一段是否合法*/
     {
         if (dots == 3)
         {
             return TRUE;
         }
     }

     return FALSE;
 }

int main()
{
     if (ip_check("1.01.255.0255") == TRUE)
     {
         printf("is ip is ok!\n");
     }else
     {
         printf("is ip is err!!!\n");
     }

   return 0;
}

MAC合法检验函数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

#define  FALSE     0
#define  TRUE      1

bool mac_check(const char *mac)
{
    int dots = 0;            //字0符 : 的个数
    char mac_temp[17+1] = {0}; //mac缓存
    char *token = NULL;  //分割字串

    if (NULL == mac || *mac == '.')
    {
        return FALSE;  //排除输入参数为NULL, 或者一个字符为':'的字符串
    }

    if(strlen(mac) != 17)  //长度判断
    {
        return FALSE;
    }

    strncpy(mac_temp, mac, sizeof(mac_temp));   //mac备份

    printf("mac:<%s\n>",mac);
    printf("mac_temp<%s\n>",mac_temp);

    token = strtok(mac_temp, ":");  //获取第一个子字符串
    
    while (token != NULL)
        {
            printf("mac:<%s>\n",token);

            if (strlen(token)  !=  2)  //字串个数为2
            {
                return FALSE;
            }

            while (*token)
                {
                    printf("*token:<%c>\n",*token);

                    if ('0' <= *token && *token <=  '9')
                        {
                            ;
                        }
                    else if ('A' <= *token && *token <= 'F')
                        {
                            ;
                        }
                    else if ('a' <= *token && *token <= 'f')
                        {
                            ;
                        }
                    else
                    {
                        return FALSE;
                    }
                    token++;
                }

            token = strtok(NULL,":");
            dots++;
        }

        if (dots != 6)  // 字串的个数
            {
                printf("dots:<%d>\n",dots);
                return FALSE;
            }
        else
        {
             return TRUE;
        }
}

int main()
{
     if (mac_check("BC:54:2F:BF:5E:,8") == TRUE)
     {
         printf("is mac is ok!\n");
     }else
     {
         printf("is mac is err!!!\n");
     }
     
   return 0;
}

看完后感觉得到帮助的小伙伴,要点点赞哦~
给笔者一些动力嘛!谢谢啦~

标签:return,IP,printf,MAC,码住,mac,token,ip,FALSE
来源: https://blog.csdn.net/weixin_45636395/article/details/120333553