Program to determine the Class, Network ID, Host ID, Broadcast ID, and Default Mask ID of an IPv4 address

Input an IPv4 address. Create a C program that checks which class it belongs to. In addition, print comments for the network address, the host address, the broadcast address, and the default mask address.

C Program

// C program to determine Class, Network ID, Host ID, Broadcast Id and Default Mask ID of an IPv4 address
#include <stdio.h>
#include <string.h>
// Function to find out the Class
char findClass(char str[])
{
    // storing first octet in arr[] variable
    char arr[4];
    int i = 0;
    while (str[i] != '.')
    {
        arr[i] = str[i];
        i++;
    }
    i--;
    // converting str[] variable into number for
    // comparison
    int ip = 0, j = 1;
    while (i >= 0)
    {
        ip = ip + (str[i] - '0') * j;
        j = j * 10;
        i--;
    }
    // Class A
    if (ip >= 1 && ip <= 126)
        return 'A';
    // Class B
    else if (ip >= 128 && ip <= 191)
        return 'B';
    // Class C
    else if (ip >= 192 && ip <= 223)
        return 'C';
    // Class D
    else if (ip >= 224 && ip <= 239)
        return 'D';
    // Class E
    else
        return 'E';
}

// Function to separate Network ID as well as Host ID, Broadcast Id and Default Mask ID and print them
void separate(char str[], char ipClass)
{
    // Initializing network and host array to NULL
    char network[12], host[12];
    for (int k = 0; k < 12; k++)
        network[k] = host[k] = '\0';
    // for class A, only first octet is Network ID
    // and rest are Host ID
    if (ipClass == 'A')
    {
        int i = 0, j = 0;
        while (str[j] != '.')
            network[i++] = str[j++];
        i = 0;
        j++;
        while (str[j] != '\0')
            host[i++] = str[j++];
        printf("Network ID: %s\n", network);
        printf("Host ID: %s", host);
        printf("Default subnet mask: 255.0.0.0\n");
        printf("Broadcast ID:%s.255.255.255\n",network);
    }
    // for class B, first two octet are Network ID
    // and rest are Host ID
    else if (ipClass == 'B')
    {
        int i = 0, j = 0, dotCount = 0;
        // storing in network[] up to 2nd dot
        // dotCount keeps track of number of
        // dots or octets passed
        while (dotCount < 2)
        {
            network[i++] = str[j++];
            if (str[j] == '.')
                dotCount++;
        }
        i = 0;
        j++;
        while (str[j] != '\0')
            host[i++] = str[j++];
        printf("Network ID is %s\n", network);
        printf("Host ID is %s", host);
        printf("Default subnet mask is 255.255.0.0\n");
        printf("Broadcast ID:%s.255.255\n",network);
    }
    // for class C, first three octet are Network ID
    // and rest are Host ID
    else if (ipClass == 'C')
    {
        int i = 0, j = 0, dotCount = 0;
        // storing in network[] up to 3rd dot
        // dotCount keeps track of number of
        // dots or octets passed
        while (dotCount < 3)
        {
            network[i++] = str[j++];
            if (str[j] == '.')
                dotCount++;
        }

        i = 0;
        j++;
        while (str[j] != '\0')
            host[i++] = str[j++];
        printf("Network ID is %s\n", network);
        printf("Host ID is %s", host);
        printf("Default subnet mask is 255.255.255.0\n");
        printf("Broadcast ID:%s.255\n",network);
    }
    // Class D and E are not divided in Network and Host ID
    else
        printf("In this Class, IP address is not divided into Network and Host ID\n");
}
//main function
int main()
{
    char str[20];
    printf("Please enter the IPV4 address: ");
    fgets(str,20,stdin);
    char ipClass = findClass(str);
    printf("Given IP address belongs to Class %c\n", ipClass);
    separate(str, ipClass);
    return 0;
}

Output

output of the ipv4 address

Related Posts

Artificial Intelligence Suggestions

Unlock Success in Your MAKAUT Semester Exam with These Empowering Artificial Intelligence Suggestions! Elevate Your Learning Experience and Excel with Confidence.

Mixed Signal Design Suggestions

Unlock Success in Your MAKAUT Semester Exam with These Empowering Mixed Signal Design Suggestions! Elevate Your Learning Experience and Excel with Confidence.

Fiber Optic Communication Suggestions

Unlock Success in Your MAKAUT Semester Exam with These Empowering Fiber Optic Communication Suggestions! Elevate Your Learning Experience and Excel with Confidence.

Cyber Security Suggestions

Unlock Success in Your MAKAUT Semester Exam with These Empowering Cyber Security Suggestions! Elevate Your Learning Experience and Excel with Confidence.

MAKAUT 7th Semester Examination Questions – 2023

Mobile Communication and Networks (PE-EC701C) Neural Network and Fuzzy Logic Control (PE-EC702C/PEROB701B) Principles of Management (HS-HU701)

CSS Cheatsheet

Transform your web design game with my CSS cheatsheet! Master the art of styling, dive into essential properties and selectors, and create visually stunning websites effortlessly. Whether…

Leave a Reply

Your email address will not be published. Required fields are marked *