因程序中需要判断IP格式,所以网上查询,使用sscanf可以实现类似正则表达式的效果,sscanf的使用比较复杂,用好了能实现很复杂的效果,现在仅整理判断IP格式的代码,以后有需要判断字符串格式了,再查询更多的用法,现在仅记录判断IP格式的代码。
#include <stdio.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
int isIpV4Addr(const char *ipAddr);
void main(void)
{
char *ip_addr = "192.168.1.1";
if(TRUE == isIpV4Addr(ip_addr))
{
printf("The ip[%s] is legal\n",ip_addr);
}
else
{
printf("The ip[%s] is not legal\n",ip_addr);
}
}
int isIpV4Addr(const char *ipAddr)
{
int ip_part_1 = 0;
int ip_part_2 = 0;
int ip_part_3 = 0;
int ip_part_4 = 0;
char end_char = 0;
if((NULL == ipAddr) || (0 == strlen(ipAddr)))
{
return FALSE;
}
if(4 == sscanf(ipAddr,"%d.%d.%d.%d%c",&ip_part_1,&ip_part_2,&ip_part_3,&ip_part_4,&end_char))
{
if((ip_part_1 >= 0) && (ip_part_1 <= 255) &&
(ip_part_2 >= 0) && (ip_part_2 <= 255) &&
(ip_part_3 >= 0) && (ip_part_3 <= 255) &&
(ip_part_4 >= 0) && (ip_part_4 <= 255)
)
{
return TRUE;
}
}
return FALSE;
}
参考:http://bbs.csdn.net/topics/330230349
http://blog.chinaunix.net/uid-26284412-id-3189214.html