Chinaunix首页 | 论坛 | 博客
  • 博客访问: 840320
  • 博文数量: 190
  • 博客积分: 2991
  • 博客等级: 少校
  • 技术积分: 2400
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-24 18:11
文章分类

全部博文(190)

文章存档

2015年(3)

2014年(1)

2013年(65)

2012年(121)

我的朋友

分类: C/C++

2012-10-29 10:52:21

1、从.的数量来看,不能大于3个

2、每两个点儿之间的数必须在0~255之间

3、每个除.之外的数必须<9且>0

4、第一个、最后一个字符不能是.

  1. #include   
  2.   
  3. int is_valid_ip(const char *ip)  
  4.   
  5. {  
  6.       
  7.     int section = 0; //每一节的十进制值  
  8.     int dot = 0; //几个点分隔符  
  9.     int last = -1; //每一节中上一个字符  
  10.   
  11.     if(*ip!='.')  
  12.     {  
  13.         while(*ip)        
  14.         {         
  15.             if(*ip == '.')                
  16.             {                 
  17.                 dot++;    
  18.                 if(dot > 3)                    
  19.                 {                     
  20.                     return 0;                     
  21.                 }                 
  22.                 if(section >= 0 && section <=255)                   
  23.                 {                     
  24.                     section = 0;  
  25.                 }else{                    
  26.                     return 0;                 
  27.                 }  
  28.                   
  29.             }else if(*ip >= '0' && *ip <= '9')  
  30.             {                 
  31.                 section = section * 10 + *ip - '0';           
  32.                 if(last == '0')                   
  33.                 {                     
  34.                     return 0;                 
  35.                 }                 
  36.             }else{            
  37.                 return 0;                 
  38.             }             
  39.             last = *ip;  
  40.             ip++;             
  41.         }         
  42.         if(section >= 0 && section <=255)       
  43.         {             
  44.             if(3 == dot)                  
  45.             {                 
  46.                 section = 0;                  
  47.                 printf("IP address success!\n");  
  48.                 return 0;                 
  49.             }             
  50.         }         
  51.         return 1;  
  52.     }  
  53.     else  
  54.     {  
  55.         printf("格式错误!");  
  56.         return 0;  
  57.     }  
  58. }  
  59. int main()  
  60. {     
  61.     is_valid_ip("23.249.22.123");  
  62.     return 0;     
  63. }  

阅读(971) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

jialisoft2012-10-31 10:45:14

新手献丑了

hnynes2012-10-29 11:04:06

奇怪你怎么不使用系统的一些结构与方法呢?  建议可以看下socket的sockaddr这个结构,我相信使用这个结构相关的处理API,应该能更容易处理上面的IP判断问题.
还有指针没有检查就直接使用了.