Рубрики

Программа для проверки IP-адреса

Напишите программу для проверки IPv4-адреса.

Согласно Википедии, IPv4-адреса канонически представлены в десятичной системе счисления, которая состоит из четырех десятичных чисел, каждое в диапазоне от 0 до 255, разделенных точками, например, 172.16.254.1.

Ниже приведены шаги, чтобы проверить, является ли данная строка действительным адресом IPv4 или нет:

Шаг 1) Разобрать строку с «.» в качестве разделителя, используя функцию « strtok () ».

e.g. ptr = strtok(str, DELIM);

шаг 2)
…… ..a) Если ptr содержит какой-либо символ, который не является цифрой, вернуть 0
…… ..b) Преобразуйте «ptr» в десятичное число, скажем «NUM»
…… ..c) Если NUM не находится в диапазоне 0-255, вернуть 0
…… ..d) Если NUM находится в диапазоне 0–255, а ptr не равен NULL, приращение «dot_counter» на 1
…… ..e) если ptr равен NULL, переходите к шагу 3, иначе переходите к шагу 1

шаг 3) если dot_counter! = 3 вернуть 0, иначе вернуть 1.

// Программа для проверки, является ли данная строка действительным адресом IPv4 или нет
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

  
#define DELIM "."

  
/ * вернуть 1, если строка содержит только цифры, иначе вернуть 0 * /

int valid_digit(char *ip_str)

{

    while (*ip_str) {

        if (*ip_str >= '0' && *ip_str <= '9')

            ++ip_str;

        else

            return 0;

    }

    return 1;

}

  
/ * вернуть 1, если строка IP верна, иначе вернуть 0 * /

int is_valid_ip(char *ip_str)

{

    int i, num, dots = 0;

    char *ptr;

  

    if (ip_str == NULL)

        return 0;

  

    // Смотрите следующую ссылку для strtok ()

    // http://pubs.opengroup.org/onlinepubs/009695399/functions/strtok_r.html

    ptr = strtok(ip_str, DELIM);

  

    if (ptr == NULL)

        return 0;

  

    while (ptr) {

  

        / * после разбора строки она должна содержать только цифры * /

        if (!valid_digit(ptr))

            return 0;

  

        num = atoi(ptr);

  

        / * проверить действующий IP * /

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

            / * разобрать оставшуюся строку * /

            ptr = strtok(NULL, DELIM);

            if (ptr != NULL)

                ++dots;

        } else

            return 0;

    }

  

    / * допустимая строка IP должна содержать 3 точки * /

    if (dots != 3)

        return 0;

    return 1;

}

  
// Программа драйвера для проверки вышеуказанных функций

int main()

{

    char ip1[] = "128.0.0.1";

    char ip2[] = "125.16.100.1";

    char ip3[] = "125.512.100.1";

    char ip4[] = "125.512.100.abc";

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

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

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

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

    return 0;

}

Выход:

Valid
Valid
Not valid
Not valid

Эта статья составлена Нарендрой Кангралкар . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Программа для проверки IP-адреса

0.00 (0%) 0 votes