欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C代码函数检测字符串是否为合法的IP地址

程序员文章站 2022-06-17 14:43:45
1.对字符串长度判断,IP地址的字符串长度在7~15个字符之间。2.对字符串的最后一个字符判断,如果最后一个字符为非数字字符,那么sscanf(strIPaddr,"%d.%d.%d.%d", &Ip[0], &Ip[1], &Ip[2], &Ip[3] );函数会将此字符作为结束字符。/*** @brief None* @param None* @retval None*/bool CheckIpv4IfCorrect( char * strIPaddr...

1.对字符串长度判断,IP地址的字符串长度在7~15个字符之间。
2.对字符串的最后一个字符判断,如果最后一个字符为非数字字符,那么sscanf(strIPaddr,"%d.%d.%d.%d", &Ip[0], &Ip[1], &Ip[2], &Ip[3] );函数会将此字符作为结束字符。

/**
* @brief  None
* @param  None
* @retval None
*/
bool CheckIpv4IfCorrect( char * strIPaddr )
{
	int Ip[4];
	
	uint8_t strIPaddrLen = strlen( strIPaddr);

	if( (strIPaddrLen < 7 ) || (strIPaddrLen > 15) )
	{
		return false;
	}

	if( (strIPaddr[strIPaddrLen - 1] < '0') || (strIPaddr[strIPaddrLen - 1] > '9') )
	{
		return false;
	}

	sscanf(strIPaddr,"%d.%d.%d.%d", &Ip[0], &Ip[1], &Ip[2], &Ip[3] );

//	printf("IPaddr:%d.%d.%d.%d\r\n", Ip[0], Ip[1], Ip[2], Ip[3] );

	for( uint8_t i = 0; i < 4; i++ )
	{
		if( (Ip[i] < 0) || (Ip[i] > 255) )
		{
			return false;
		}
	}

	return true;
}

测试代码:

#include "stdio.h"
#include "stdint.h"
int _tmain(int argc, _TCHAR* argv[])
{
	char IpAddr[20] = "192.168.0.12";

	if( CheckIpv4IfCorrect( IpAddr ) == true )
	{
		printf("Ip addr is correct!\r\n");
	}
	else
	{
		printf("Ip addr is error!\r\n");
	}

	return 0;
}

执行结果:

Ip addr is correct!

测试代码:

#include "stdio.h"
#include "stdint.h"
int _tmain(int argc, _TCHAR* argv[])
{
	char IpAddr[20] = "192.168.0.12c";

	if( CheckIpv4IfCorrect( IpAddr ) == true )
	{
		printf("Ip addr is correct!\r\n");
	}
	else
	{
		printf("Ip addr is error!\r\n");
	}

	return 0;
}

执行结果:

Ip addr is error!

本文地址:https://blog.csdn.net/professionalmcu/article/details/107299876