안녕하세요 IP주소값을 구분할려는데요..

segenny의 이미지

int i = 0, j = 0, k = 0;

for (k = 0; *(ip+i) != '\0'; i++)
{
if ( *(ip+i) == '.')
i++;
j++;
}
switch (j)
{
case 0:
userIP.a0 = *(ip+i);
break;
case 1:
userIP.a1 = *(ip+i);
break;
case 2:
userIP.a2 = *(ip+i);
break;
case 3:
userIP.a3 = *(ip+i);
break;
default:
break;
}
}

주소값을 문자열로 받아서..
이렇게 각 구조체 필드에 저장시킬려고 하는데 잘 안되네요.. ㅡㅡ; 제가 뭘 빠트린 부분이 있나요?

망치의 이미지

    function encode_ip($dotquad_ip)
    {
    	$ip_sep = explode('.', $dotquad_ip);
    	return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
    }

답변은 아니지만 참고하시라고 올려봅니다; 제가 사용 하는 방법입니다.

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/

hie의 이미지

sscanf를 사용하시면 됩니다.

if( sscanf(string_ip, "%d.%d.%d.%d.", 
    &userIP.a0, 
    &userIP.a1, 
    &userIP.a2, 
    userIP.a3) != 4 )
{
    // 에러 처리
}

즐프하세요..