C言語はipが合法かどうかを検査する
9533 ワード
仕事の中で私たちはよくこのような問題に直面します:1つの入力した文字列が合法的なIPアドレスであるかどうかを判断して、以下はテストの小さいプログラムです:
実行結果:
転載先:https://www.cnblogs.com/wenqiang/p/5959835.html
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