#include <string.h>
#include <stdlib.h>
//从字串p中获取ip整数到整数数组a,成功返回0,失败返回1
int getipaddress(char *pp, int *a){
int d[5]={-1},di=1,ai=0
int i,j,m
char *p
p=(char *)malloc(sizeof(char)*strlen(pp))
strcpy(p,pp) //把来源的pp地址复制下来,要不然pp的内容可能是常数,将无法修改
//删除p中非数字,非小数点的字符
for(i=strlen(p)-1i>=0i--)
if(p[i]!='.' && (p[i]<'0' || p[i]>'9'))
for(j=ij<strlen(p)j++)
p[j]=p[j+1]
//检查获取小数点所在的位置
if (p[0]=='.') return 1 //小数点在第一位,错误
for(i=0i<strlen(p)i++)
if(p[i]=='.') {
d[di++]=i
if (di>4) return 1 //小数点数量超过3个,错误
}
if (di!=4) return 1 //小数点数量少于3个,错误
d[4]=strlen(p)
//计算各ip的分段值
for(i=0i<4i++){
m=0
for(j=d[i]+1j<=d[i+1]-1j++)
m=m*10+p[j]-'0'
if (m<0 || m>255) return 1 //整数的数值过大
a[i]=m
}
free(p)
return 0
}
int main(){
int address[4]
char *p="192.168.0.1"
int i,k
k=getipaddress(p,address)
if (k==0)
for(i=0i<4i++)
printf("%d ",address[i])
else
printf("错误的ip地址\n")
}