IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言检查IP、MAC合法函数 实用 码住喽! -> 正文阅读

[C++知识库]C语言检查IP、MAC合法函数 实用 码住喽!

一、简单说说

  • 最近在项目开发中用到的几个很实用的小函数推荐给大家,提高开发时间效率!话不多说,直接上代码哈 ~

IP合法检验函数

  • 凡是有一点点错误的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合法检验函数

  • 说明一下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;
}

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

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:16:21  更:2021-09-23 11:17:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:00:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码