验证 IP 地址的 C 程序

在这个程序中,我们将看到如何使用 C 验证 IP 地址。 IPv4 地址以点十进制表示法表示。有四个十进制数(都在 0 到 255 之间)。这四个数字由三个点分隔。

有效 IP 的示例是:192.168.4.1

要验证 IP 地址,我们应该按照以下步骤操作

  • 使用点“.”标记字符串(IP 地址)。分隔符

  • 如果子字符串包含任何非数字字符,则返回 false

  • 如果每个标记中的数字不在 0 到 255 的范围内,则返回 false

  • 如果正好有三个点和四个部分,那么它就是一个有效的 IP 地址

示例代码

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <ctype.h>

int validate_number(char *str) {

   while (*str) {

      if(!isdigit(*str)){ //如果字符不是数字,则返回

         false

         return 0;

      }

      str++; //指向下一个字符

   }

   return 1;

}

int validate_ip(char *ip) { //检查IP是否有效

   int i, num, dots = 0;

   char *ptr;

   if (ip == NULL)

      return 0;

      ptr = strtok(ip, "."); //使用 do 分隔符剪切字符串

      if (ptr == NULL)

         return 0;

   while (ptr) {

      if (!validate_number(ptr)) //检查子字符串是否为

         holding only number or not

         return 0;

         num = atoi(ptr); //将子字符串转换为数字

         if (num >= 0 && num <= 255) {

            ptr = strtok(NULL, "."); //剪下字符串的下一部分

            if (ptr != NULL)

               dots++; //增加点数

         } else

            return 0;

    }

    if (dots != 3) //如果点数不是 3,则返回 false

       return 0;

      return 1;

}

int main() {

   char ip1[] = "192.168.4.1";

   char ip2[] = "172.16.253.1";

   char ip3[] = "192.800.100.1";

   char ip4[] = "125.512.100.abc";

   validate_ip(ip1)? printf("Valid\n"): printf("Not valid\n");

   validate_ip(ip2)? printf("Valid\n"): printf("Not valid\n");

   validate_ip(ip3)? printf("Valid\n"): printf("Not valid\n");

   validate_ip(ip4)? printf("Valid\n"): printf("Not valid\n");

}

输出结果
Valid

Valid

Not valid

Not valid

以上是 验证 IP 地址的 C 程序 的全部内容, 来源链接: utcz.com/z/322835.html

回到顶部