如何获取本机IP

怎么获取本机IP
请问如何获取本机IP地址,我用如下方法,str显示出来的是乱码,请大家指教
                  char   szHostname[40];      
HOSTENT*   LocalHost;      
gethostname(szHostname,40);      
LocalHost   =gethostbyname(szHostname);    
char   *IPBuf=new   char[40];
memset(IPBuf, '\0 ',40);
IPBuf=   LocalHost-> h_addr_list[0];
CString   str=IPBuf;
MessageBox(str);

------解决方案--------------------
CString CConnDLG::GetLocalIp()
{
struct hostent* phost;
char ip[20];
char hostname[50];

gethostname(hostname,50);
phost = gethostbyname(hostname);
char ** names;
names = phost-> h_aliases;
char ** iplist;
iplist = phost-> h_addr_list;
while( * iplist)
{
strcpy(ip,inet_ntoa( * (struct in_addr * ) * iplist));
iplist ++;
}
CString LocalIp = ip;
return LocalIp;
}

自己改一下
我程序里用过的东东