C语言从字符串校验IP合法性

C语言从字符串校验IP合法性

首先拷贝字符串,然后使用strtok函数按"."进行分割

把分割完成的字符使用atoi函数转为整数,然后判断数字大小是否在0-255区间内

由于IP首段不能为0,所以排除首段为0的数据

最后验证分割后的段数是否为4段

// 检查ip合法性
int check_ip_set(const char *ip)
{
    if (ip == NULL)
    {
        return -1;
    }

    int seg_count = 0; // IP地址的段数
    int seg_value = 0; // 当前段的数值

    // 复制一份IP地址字符串,以便进行修改
    char ip_copy[16];
    strcpy(ip_copy, ip);

    // 使用strtok函数按照'.'分割IP地址
    char *token = strtok(ip_copy, ".");
    while (token != NULL)
    {
        seg_count++;

        // 检查段的数值范围是否合法
        seg_value = atoi(token);
        if (seg_value < 0 || seg_value > 255)
        {
            return -1;
        }

        // 检查段是否以0开头,除非为0本身
        if (seg_value != 0 && token[0] == '0')
        {
            return -1;
        }

        // 获取下一个段
        token = strtok(NULL, ".");
    }

    // IP地址应该有4个段
    if (seg_count != 4)
    {
        return -1;
    }
    return 0;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇