本文目录一览:
判断字符串是否是合法的ipv4地址
public static boolean Isipv4(String ipv4){
if(ipv4 == null || ipv4.length() == 0){
return false; //字符串为空或者空串
}
String[] parts = ipv4.split("\\."); //因为java doc里已经说明, split的参数是reg, 即正则表达式, 如果用"|"分割, 则需使用"\\|"
if(parts.length != 4){
return false; //分割开的数组根本就不是4个数字
}
for(int i = 0; i < parts.length; i++){
try{
int n = Integer.parseInt(parts[i]);
if(n < 0 || n > 255){
return false; //数字不在正确范围内
}
}catch (NumberFormatException e) {
return false; //转换数字不正确
}
}
return true;
}
C语言 问题 C: IP地址的合法性检查?
#include stdio.h
int isVaildIp(char *ip) {
int dots = 0; /*字符.的个数*/
int setions = 0; /*ip每一部分总和(0-255)*/
if (NULL == ip || *ip == '.') { /*排除输入参数为NULL, 或者一个字符为'.'的字符串*/
return 0;
}
char *p = ip;
while (*p) {
if (*p == '.') {
dots ++;
if (setions >= 0 && setions <= 255) { /*检查ip是否合法*/
setions = 0;
p++;
continue;
}
return 0;
}
else if (*p >= '0' && *p <= '9') {
if (p != ip && *(p - 1) == '0' && *(p - 2) == '.')
return 0; /*判断是不是数字*/
setions = setions * 10 + (*p - '0'); /*求每一段总和*/
}
else
return 0;
p++;
}
if (setions >= 0 && setions <= 255) {
if (dots == 3) {
return 1;
}
}
return 0;
}
int main(void) {
int n;
scanf("%d", n);
getchar();
while (n--) {
char s[100];
scanf("%s", s);
if (isVaildIp(s))
puts("YES");
else
puts("NO");
}
return 0;
}
如何用C语言判断ip地址是否合法
可以试一下
#include stdio.h
int checkIP(const char* p)
{
int n[4];
char c[4];
if (sscanf(p, "%d%c%d%c%d%c%d%c",
n[0], &c[0], n[1], &c[1],
n[2], &c[2], n[3], &c[3])
== 7)
{
int i;
for(i = 0; i < 3; ++i)
if (c[i] != '.')
return 0;
for(i = 0; i < 4; ++i)
if (n[i] > 255 || n[i] < 0)
return 0;
return 1;
} else {
return 0;
}
}
int main()
{
const char* x[] = {
"192.168.1.1",
"10.0.0.1.",
"127.256.0.1",
"iugerjiogjioe",
"172.16,0.1",
0
};
const char* m[] = {
"不是合法的IP地址",
"是合法的IP地址"
};
int i = 0;
while(x[i] != 0) {
printf("%s %s\n", x[i], m[checkIP(x[i])]);
++i;
}
return 0;
}