programming/MFC
CString 으로 받은 IP Address를 4byte로 자르기
설은
2011. 12. 16. 15:22
IP Address를 문자열을 받으면 각 한 BYTE로 나누는 방식입니다.
strtok() 함수를 사용하였습니다. - 함수에 대한 자세한 내용은 MSDN http://msdn.microsoft.com/ko-kr/library/2c8d19sb(VS.90).aspx
strIpAddres = "192.168.0.0" 이렇게 받는다고 하면...
char* szIpAddress;
BYTE m_IpAddr[4];
char *p;
int i = 0;
p = strtok(szIpAddress, "."); // 192 대입됨
m_IpAddr[i] = atoi(p);
while(p!=NULL)
{
i++;
p = strtok(NULL, "."); // 168 -> 0 -> 0 순서대로 대입 (이유는 아래)
if(p)
IpAddr = atoi(p);
}
char* szIpAddress;
BYTE m_IpAddr[4];
char *p;
int i = 0;
p = strtok(szIpAddress, "."); // 192 대입됨
m_IpAddr[i] = atoi(p);
while(p!=NULL)
{
i++;
p = strtok(NULL, "."); // 168 -> 0 -> 0 순서대로 대입 (이유는 아래)
if(p)
IpAddr = atoi(p);
}
이렇게 하면 BYTE m_IpAddr[4]; 에 [0] ~ [3] 배열에 192.168.0.0 이 들어갑니다.
ex)
IpAddr[0] ->192
IpAddr[1] ->168
IpAddr[2] ->0
IpAddr[3] ->0
-- 아래 --
strtok 함수 사용 할때 알아야 할점)
처음 호출할땐 strtok(szIpAddress, "." ) 이것처럼 해당 문자열의 처음시작주소를 넘겨주고
다음 호출할땐 좀 전에 니가 바꿔버린 NULL부터 다시 토큰을 뽑아내라고 strtok( NULL, "." )이라고 집어넣어야 합니다.
strtok() 함수의 특성(?)이라고 합니다.