- 论坛徽章:
- 0
|
程序如下,可以编译执行:
问题是判断输入超过255的地方有错,判断是否数字就可以,
正确执行:
a:192.168.1.1
true
a:266.266.266.266
flause
a:cc.cc.cc.cc
flause
现在执行情况:
a:192.168.1.1
true
a:266.266.266.266
true
a:cc.cc.cc.cc
flause
\帮忙看一下啦
-------------------------------------
#include <stdio.h>;
#include <string.h>;
#include <math.h>;
int addrformat(char *address);
int main()
{
char a[20];
char ac[100];
printf("please enter a:" ;
fgets(ac,20,stdin);
memcpy(a,ac,(strlen(ac)-1));
a[strlen(ac)-1] = '\0';
printf("%s\n",a);
if(addrformat(a) == -1)
printf("flause\n" ;
else
printf("true\n" ;
}
int addrformat(char *address) {
char address_buf[20];
int i,j;
for(i=0,j=0;1;i++) {
if(address != '.' && address != '\0') {
address_buf[j] = address;
if(isdigit(address_buf[j]) == 0)
return -1;
j++;
}
else {
address_buf[j] = '\0';
printf("<debug>; address_buf = %s\n",address_buf);//可能这部分里有错
if(atoi(address_buf) >; 255 && atoi(address_buf) < 0)
return(-1);
else {
return 1;
j = 0;
}
}
if(address == '\0');
break;
}
} |
|