C语言判断IP地址是否合法

C语言判断IP地址是否合法


代码如下:

/*
* 函数功能:判断字符串是否为合法IP地址
* 函数类型:立即函数,调用后立即生效。
* 函数形参:
*	const char* ip:需要判断的字符串
* 返 回 值:
*	true:IP地址合法正确
*  false:IP地址格式错误
* 其他:
*   1.
*/
bool isVaildIp(const char* ip)
{
    int     dots = 0;                                   //字符 . 的个数
    int     setions = 0;                                //ip每一部分总和(0-255)
    int     strnum = 0;                                 //字符串长度记录

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

    while (*ip)                                         //字符串不为空
    {
        if (*ip == '.')                                 //如果当前字符为点.则开始判断上一段是否合法在0~255之间
        {
            dots++;                                     //字符 . 的个加一
            if (setions >= 0 && setions <= 255)         //检查ip是否合法
            {
                setions = 0;                            //对上一段IP总和进行清零
            }
            else
            {  
                return  false;                          //格式错误,某一段数值不在0~255之间
            }
        }
        else if (*ip >= '0' && *ip <= '9')              //判断是不是数字
        {
            setions = setions * 10 + (*ip - '0');       //求每一段总和
        }
        else
        {
            return  false;                              //该字符既不是数字也不是点
        }
        ip++;                                           //指向下一个字符
        if (++strnum>15)                                //3*4+3=15,IP地址字符串非结束符字符数最多15个
        {
            return  false;                              //防止出现“1234567890987654321.”这种前面全是数字的字符串输入进来。
        }
    }
    /*判断IP最后一段是否合法*/
    if (setions >= 0 && setions <= 255)
    {                 
        if (dots == 3)                                  //防止出现:“192.168.123”这种不是三个点的情况
        {
            return  true;                               //IP地址合法正确
        }
    }
    return  false;
}
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用C语言IP地址合法性进行判断,可以使用正则表达式或者字符串处理函数进行校验。以下是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> bool isValidIPAddress(const char* ipAddress) { // 分割IP地址 char* token = strtok(ipAddress, "."); int num; // 检查每个分割的部分是否合法的数字 while (token != NULL) { num = atoi(token); if (num < 0 || num > 255) { return false; } // 检查数字前后是否有多余的0 char temp[4]; sprintf(temp, "%d", num); if (strcmp(temp, token) != 0) { return false; } token = strtok(NULL, "."); } return true; } int main() { const char* ipAddress = "192.168.0.1"; if (isValidIPAddress(ipAddress)) { printf("IP地址合法\n"); } else { printf("IP地址合法\n"); } return 0; } ``` 要使用C语言对子网掩码进行合法判断,可以使用与IP地址类似的方法,检查每个分割部分是否是0或者255,并且检查位数是否正确。以下是一个示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> bool isValidSubnetMask(const char* subnetMask) { // 分割子网掩码 char* token = strtok(subnetMask, "."); int num; bool allOnes = false; // 检查每个分割的部分是否合法的数字 while (token != NULL) { num = atoi(token); if (num < 0 || num > 255) { return false; } // 检查数字前后是否有多余的0 char temp[4]; sprintf(temp, "%d", num); if (strcmp(temp, token) != 0) { return false; } // 检查位数是否正确 if (!allOnes && num != 255) { if (num == 0) { allOnes = true; } else { return false; } } else if (allOnes && num != 0) { return false; } token = strtok(NULL, "."); } return true; } int main() { const char* subnetMask = "255.255.255.0"; if (isValidSubnetMask(subnetMask)) { printf("子网掩码合法\n"); } else { printf("子网掩码不合法\n"); } return 0; } ``` 这些示例代码仅供参考,具体的判断逻辑可以根据实际需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值