Computer >> Máy Tính >  >> Lập trình >> lập trình C

C Chương trình xác thực địa chỉ IP

Trong chương trình này, chúng ta sẽ xem cách xác thực địa chỉ IP bằng C. Địa chỉ IPv4 được biểu thị bằng ký hiệu dấu chấm-thập phân. Có bốn số thập phân (tất cả đều nằm trong khoảng từ 0 đến 255). Bốn số này được phân tách bằng ba dấu chấm.

Ví dụ về IP hợp lệ là:192.168.4.1

Để xác thực địa chỉ IP, chúng ta nên làm theo các bước sau

  • Mã hóa chuỗi (địa chỉ IP) bằng cách sử dụng dấu chấm “.” dấu phân cách

  • Nếu các chuỗi con chứa bất kỳ ký tự không phải số nào thì trả về false

  • Nếu số trong mỗi mã thông báo không nằm trong phạm vi từ 0 đến 255, thì trả về false

  • Nếu có chính xác ba dấu chấm và bốn phần thì đó là địa chỉ IP hợp lệ

Mã mẫu

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int validate_number(char *str) {
   while (*str) {
      if(!isdigit(*str)){ //if the character is not a number, return
         false
         return 0;
      }
      str++; //point to next character
   }
   return 1;
}
int validate_ip(char *ip) { //check whether the IP is valid or not
   int i, num, dots = 0;
   char *ptr;
   if (ip == NULL)
      return 0;
      ptr = strtok(ip, "."); //cut the string using dor delimiter
      if (ptr == NULL)
         return 0;
   while (ptr) {
      if (!validate_number(ptr)) //check whether the sub string is
         holding only number or not
         return 0;
         num = atoi(ptr); //convert substring to number
         if (num >= 0 && num <= 255) {
            ptr = strtok(NULL, "."); //cut the next part of the string
            if (ptr != NULL)
               dots++; //increase the dot count
         } else
            return 0;
    }
    if (dots != 3) //if the number of dots are not 3, return 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");
}

Đầu ra

Valid
Valid
Not valid
Not valid