C言語はipが合法かどうかを検査する

9533 ワード

仕事の中で私たちはよくこのような問題に直面します:1つの入力した文字列が合法的なIPアドレスであるかどうかを判断して、以下はテストの小さいプログラムです:
 1 #include 
 2 #include <string.h>
 3 #include 
 4 #include 
 5 
 6 bool isVaildIp(const char *ip)
 7 {
 8     int dots = 0; /* . */
 9     int setions = 0; /*ip (0-255)*/ 
10 
11     if (NULL == ip || *ip == '.') { /*  NULL,  '.' */ 
12         return false;
13     }   
14 
15     while (*ip) {
16 
17         if (*ip == '.') {
18             dots ++; 
19             if (setions >= 0 && setions <= 255) { /* ip */
20                 setions = 0;
21                 ip++;
22                 continue;
23             }   
24             return false;
25         }   
26         else if (*ip >= '0' && *ip <= '9') { /* */
27             setions = setions * 10 + (*ip - '0'); /* */
28         } else 
29             return false;
30         ip++;   
31     }   
32    /* IP */ 
33     if (setions >= 0 && setions <= 255) {
34         if (dots == 3) {
35             return true;
36         }   
37     }   
38 
39     return false;
40 }
41 
42 void help()
43 {
44     printf("Usage: ./test 
"); 45 exit(0); 46 } 47 48 int main(int argc, char **argv) 49 { 50 if (argc != 2) { 51 help(); 52 } 53 54 if (isVaildIp(argv[1])) { 55 printf("Is Vaild Ip-->[%s]
", argv[1]); 56 } else { 57 printf("Is Invalid Ip-->[%s]
", argv[1]); 58 } 59 60 return 0; 61 }

実行結果:
1 [root@localhost isvildip]# ./test 192.168.1.1
2 Is Vaild Ip-->[192.168.1.1]
3 [root@localhost isvildip]# ./test 192.168.1.256
4 Is Invalid Ip-->[192.168.1.256]
5 [root@localhost isvildip]# 

 
転載先:https://www.cnblogs.com/wenqiang/p/5959835.html