Enter the IP address to determine the legality

A method (more complex): 

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[20];
	int i=0,count=0;
	bool flag=1;
	scanf("%s",&arr);	
	if(strlen(arr)>13 || (arr[3]!='.') || (arr[7]!='.') || (arr[9]!='.'))
	{
		printf("No");
		return 0;
	}	
	while(arr[i]!='.')
	{
		if(arr[i]<'0'||arr[i]>'9'||count>=3)
		{
			printf("No");
			return 0;
		}
		count++;
		i++;
	}
	i++;
	count=0;
	while(arr[i]!='.')
	{
		if(arr[i]<'0'||arr[i]>'9'||count>=3)
		{
			printf("No");
			return 0;
		}
		count++;
		i++;
	}
	i++;
	if(arr[i]<'0'||arr[i]>'9')
	{
		printf("No");
		return 0;
	}
	i=i+2;
	count=0;
	while(arr[i]!='\0')
	{
		if(arr[i]<'0'||arr[i]>'9'||count>=3)
		{
			flag=0;
			printf("No");
			return 0;
		}
		count++;
		i++;
	}
	if(flag)
		printf("\nYes!");
}

Method Two (relatively simple): 

#include<stdio.h>
#include<string.h> 

int judge(char *arr,int length);
int main()
{
	char arr[20];
	int length;
	scanf("%s",arr);
	length=sizeof(arr)/sizeof(arr[0]);
	if(judge(arr,length))
		printf("Yes!");
	else
		printf("No!");	
}
int judge(char *arr,int length)
{
	int a,b,c,d;
	if(arr == NULL || length < 11 || length < 13)
		return 0;
	if((arr[3]!='.')||(arr[7]!='.')||(arr[9]!='.'))
	{
		return 0;
	}
	sscanf(arr,"%d.%d.%d.%d",&a,&b,&c,&d);
	if(a<0 || a>255)
		return 0;
	if(b<0 || b>255)
		return 0;
	if(c<0 || c>1)
		return 0;
	if(d<0 || d>255)	
		return 0;
	return 1;	
}

 

Published 33 original articles · won praise 30 · views 20000 +

Guess you like

Origin blog.csdn.net/baidu_15547923/article/details/99707139