IP地址正确性校验

来源:互联网 发布:数据同化 知乎 编辑:程序博客网 时间:2024/05/17 01:01
#include <stdio.h>#include <string.h>int a,b,c,d;char t;char ip[256]={0},str_1[15]={0},str_2[15]={0},str_3[15]={0},str_4[15]={0};void main() {    printf("请输入一个ip地址校验其正确性【以exit结束】:");gets(ip);while(stricmp(ip,"exit")!=0){if (strlen(ip)<7 || strlen(ip)>15){printf("【%s】 不是一个合法的IP地址\n",ip);}else if(4==sscanf(ip,"%[^.].%[^.].%[^.].%s",str_1,str_2,str_3,str_4)){if (strlen(str_1)>3 || strlen(str_2)>3 || strlen(str_3)>3 || strlen(str_4)>3){printf("【%s】 不是一个合法的IP地址\n",ip);}else if (4==sscanf(ip,"%d.%d.%d.%d%c",&a,&b,&c,&d,&t)) {if (0<=a && a<=255&& 0<=b && b<=255&& 0<=c && c<=255&& 0<=d && d<=255) {printf("【%s】 是一个合法的IP地址\n",ip);} else {printf("【%s】 ip地址不合法,最大的ip地址是255.255.255.255\n",ip);}} else{printf("【%s】 不是一个合法的IP地址\n",ip);}}else {printf("【%s】 不是一个合法的IP地址\n",ip);}printf("请输入一个ip地址校验其正确性【以exit结束】:");gets(ip);}}
偶然遇到一个校验IP地址的问题,所以在网上搜索了一下,发现一个很好的代码,在此分享,个人认为很经典。自己添加了一个循环操作。其实这个代码我觉得字符串数组不好,这也就限定了字符串长度,字符串越界很可能发生,不知有什么好的解决办法