说明:检验各字段是否出现前导零,是否存在字母,各字段数字是否在0--255之间
#include<stdio.h>
#include<math.h>
#include<list>
using namespace std;
int main(){
char ch[15];
list<int> ip;
list<int>::iterator it;
int num[] = { 0, 0, 0, 0 };
int a = 0, j = 0,pointnum=0;
printf("输入IP:");
scanf("%s", ch);
for (int i = 0; i < 15;i++){
if(ch[i]>='A'&&ch[i]<='z'){
printf("N\n");
return 0;
}
if (ch[i] != '.'&&ch[i]!='\0'){
ip.push_front(ch[i] - '0');
}else{
if (ip.back()== 0){
printf("N\n");
return 0;
}
for (it = ip.begin(), j = 0; it != ip.end(); it++, j++){
num[a] += *it*pow(10, j);
}
if (num[a] > 255){
printf("N\n");
return 0;
}
a++;
ip.clear();
}
if (ch[i] == '\0'){
printf("Y\n");
return 0;
}
}
}