最近正在学习C/C++,看到ip地址转为整型数组的问题,用sscanf来匹配,记录一下。
#include <iostream>
using namespace std;
int strToip(char *str,int *number){
if(str==NULL){
return -1;
}
int num1,num2,num3,num4;
char extra=0;
int idx=sscanf(str,"%d.%d.%d.%d %c",&number[0],&number[1],&number[2],&number[3],&extra);
if(idx<4||idx>5){
//printf("the length extends the margin");
return -2;
}
printf("%c",extra);
if(extra!=0){
//printf(" non-number character exists");
return -3;
}
if(number[0]<0||number[0]>255||number[1]<0||number[1]>255||number[2]<0||number[2]>255||number[3]<0||number[3]>255){
printf("the number is wrong");
return -4;
}
return 1;
}
int main(){
char *ips="172.0.0.1";
int *ipnum=new int[4];
int a=strToip(ips,ipnum);
if(a==1){
for(int i=0;i<4;i++){
printf("%d ",ipnum[i]);
}
}
return 0;
}