본문 바로가기

프로그래밍/C언어

[C언어] IP 유효성 검사하기


C언어 IP 유효성 검사하기

=====> Source Code <=====

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdlib.h>

bool ip_check(char *ip)
{
    if(strcmp(ip, " ") == 0)
    {
        printf("IP address NULL!\n");
        return false;
    }

    int len = strlen(ip);

    if( len > 15 || len < 7 )
        return false;

    int nNumCount = 0;
    int nDotCount = 0;
    int i = 0;

    for( i=0; i<len; i++)
    {
        if(ip[i] < '0' || ip[i] > '9')
        {
            if(ip[i] == '.')
            {
                ++nDotCount;
                nNumCount = 0;
            }
            else
                return false;
        }
        else
        {
            if(++nNumCount > 3)
                return false;
        }
    }

    if(nDotCount != 3)
        return false;

    return true;
}

int main(int argc, char **argv[])
{
    char ip[15];
    printf("IP Input!\n");
    printf("[Usage] IP : 192.168.1.1\n");
    printf("IP : ");

    scanf("%s", &ip);
    printf("Your press ip : %s\n", &ip);
    if(ip_check(ip) == false)
    {
        printf("IP not availd!\n");
    }
    else
    {
        printf(" IP OK\n");
    }
    exit(0);
}

=====> 설명 <=====

사용자로부터 ip를 입력받고 난 후, 검사를 시작하게 됩니다.
검사를 하는 동안에 각 자리수가 3자리수인지를 확인하고, 일단은 전체 ip 문자열의 길이가
xxx.xxx.xxx.xxx을 초과하는지 검사를 하게 됩니다.

위의 검사를 통과하게 되면은 각 자리별로 0~9인지 검사를 하게 되며,
검사가 끝남과 동시에 각 자리수별로 xxx 3자리수가 맞는지 아니면 false값을 return 하게 됩니다.

간단하게 소스코드를 제작해 보았습니다.
아래의 출저에서 사용자가 이해하기 쉽게 main을 구성하여 간단한 테스트 프로그램을 작성하였습니다.

출저 : http://a.tk.co.kr/321   < Kyuseo의 게임 프로그래밍 > 블로그에서 발췌함을 알려드립니다.