代码
int Utils::parseIp(char *data,unsigned char *dataIp)
{
unsigned char i = 0;
unsigned char j = 0;
unsigned char k = 0;
unsigned char point_num = 0;
unsigned short value = 0;
unsigned char ip[4];
memset(ip,0,4);
unsigned char ipLen = 0;
if(data == NULL)
return -1;
if(strlen(data)>15)
return -1;
if(strlen(data)<7)
return -1;
ipLen = strlen(data);
for(i=0;i<ipLen;i++)
{
if(data[i] == '.')
point_num++;
if((data[i] == '.')&&(data[i+1] == '.'))
{
point_num = 0;
break;
}
}
if(point_num == 3)
{
for( k =0;k<4;)
{
for(i=0;(data[i]!='\0')&&(i<15);)
{
for(j=0,value =0;j<4;j++)
{
if((data[i] == '.')||(data[i]=='\0'))
{
i++;
break;
}
value = (data[i]- '0')+value*10;
i++;
}
if(value >255)
return -1;
else
ip[k++] = value;
}
}
memcpy(dataIp,ip,4);
return 0;
}else
{
return -2;
}
}
使用
char ipStr[]="192.168.1.1";
unsigned char ip[4];
if(parseIp(ipStr,ip) != 0)
{
printf("format error \n");
}
else
{
printf("parse ip:%d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);
}