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