阅读下列说明和C函数,填补函数中的空缺,将解答填入答案纸的对应栏目内。【说明】函数isLegal(char*ipaddr)的功能是判断以点分十进制数表示的iPV4地址是否合法。参数ipadddr给出表示iPV4地址的字符串的首地址,串中仅含数字字符和“.”。若iPV4地址合法则返回1,否则反馈0.判定伟合法的条件是:每个十进制数的值位于整数区间[0,25],两个相邻的树之间用“.”分隔,共4个数、3个“.”。;例如,192.168.0.15、1.0.0.1是合法的,192.168.1.256、1.1..1是不合法的。【函数】intisLegal(char*ipaddr)﹛intflag;intcurVal;//curVal表示分析出的一个十进制数intdecNum=0,dotNum=0;//decNum用于记录十进制数的个数//dotNum用户记录点的个数Char*p=()for(;*p;p++)﹛curVal=0;flag=0While(isdigit(*p))﹛//判断是否伟数字字符CurVal=()+*p-′0′;()flag=1;﹜if(curVal>255)﹛return0;﹜if(flag)﹛()﹜if(*p==′.′)dotNum++;﹜﹜if()﹛return1;﹜return0;﹜
(1)ipaddr(2)curval*10(3)p++(4)decNum++(5)decNum==4 && dotNum==3 【解析】 此题判断IPV4地址是否合法,主要是判断其每个十进制数的大小和总个数以及“.”个数来进行判别。首先用isdigital函数判断是否为十进制数,是则保留值。指针移到地址的下一个字符。每找到一个十进制数都需要和前一次找到的值进行组合,即前一次的结果要乘以10。每找完一个完整数字和“.”都需要记录,所以要有decNum++和dotNum++。最后,如果IP地址正确,则返回1。即:decNum=4和dotNum=3时成立。