C语言 问题 C: IP地址的合法性检查?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 问题 C: IP地址的合法性检查?相关的知识,希望对你有一定的参考价值。

题目描述
一个合法的IP地址是由三个点分隔开的4个整数,每个整数的取值范围为:0~255之间。输入IP地址判断IP地址是否合法。
输入
第一行的整数表示有多少组数据。接下来是输入的IP地址。
输出
如果IP地址合法则输出YES,否则输出NO.
样例输入 Copy
3
122.204.218.1
122.257.33.1
25.0.3.12a
样例输出 Copy
YES
NO
NO

参考技术A #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;
本回答被提问者采纳
参考技术B 这个程序只要,这个程序只要使用标准的读入语句,读入四个整数,然后判断每个整数的范围大于等于零,并且小于256就可以了

如何用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;
参考技术A 回答

确定IP地址的合法步骤:1、首先了解IP地址是什么,IP地址分为A类、B类、C类、D类、E类。A类的IP地址范围是0.0.0-127.255.255.255,B类是128.0.0.0-191.255.255,C类是192.0.0.0-223.255.255.255。2. 然后判断身份证的长度。在a级IP地址中,网络标识的长度为8位,主机标识的长度为24位,子网掩码为255.0.0。B类适用于网络ID长度为16位、主机ID长度为16位、子网掩码为255.255.0.0的中型网络。C类适用于网络标识长度为24位、主机标识长度为8位、子网掩码为255.255.255.0的小型局域网。3. 最后,判断是否合法。在每个合法IP地址中,有四个以“.”分隔的3位数字,每个3位数字介于0和255之间,包括255。我相信经过学习,我们已经知道如何判断IP地址是否合法。IP地址:Internet协议地址,缩写为IP地址。IP地址是IP协议提供的统一地址格式。它为因特网上的每个网络和每个主机分配一个逻辑地址,以屏蔽物理地址的差异

以上是关于C语言 问题 C: IP地址的合法性检查?的主要内容,如果未能解决你的问题,请参考以下文章

怎样检查C语言输入数据的合法性?

怎样检查C语言输入数据的合法性?

c语言 检查输入是不是合法

c++判断ip地址是不是合法

关于c语言判断电话号码合法问题

如何判断子网掩码是不是合法