Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C kiểm tra địa chỉ IP hợp lệ


Chương trình này kiểm tra địa chỉ IP hợp lệ dùng C. Địa chỉ IPv4 dạng thập phân chấm. Có 4 số thập phân (0-255), cách nhau 3 chấm.

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

Các bước kiểm tra:

  • Tách chuỗi (IP) dùng dấu chấm "." làm delimiter

  • Nếu chuỗi con chứa ký tự không phải số, trả về false

  • Nếu số trong token không trong 0-255, trả về false

  • Nếu đúng 3 chấm và 4 phần thì IP hợp lệ

Ví dụ mã

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int validate_number(char *str) {
    while (*str) {
        if(!isdigit(*str)) { // ký tự không phải số
            return 0;
        }
        str++; // ký tự tiếp theo
    }
    return 1;
}

int validate_ip(char *ip) {
    int i, num, dots = 0;
    char *ptr;
    if (ip == NULL) return 0;
    ptr = strtok(ip, "."); // tách chuỗi dùng dấu chấm
    if (ptr == NULL) return 0;
    while (ptr) {
        if (!validate_number(ptr)) // kiểm tra chuỗi con chỉ chứa số
            return 0;
        num = atoi(ptr); // chuyển chuỗi con thành số
        if (num >= 0 && num <= 255) {
            ptr = strtok(NULL, "."); // tách phần tiếp theo
            if (ptr != NULL)
                dots++; // đếm chấm
        } else
            return 0;
    }
    if (dots != 3) return 0; // không đúng 3 chấm
    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");
}

Kết quả

Valid
Valid
Not valid
Not valid