判断IP地址的合法性,

1.不能出现除数字和点字符以外的的其他字符

2.数字必须在0-255之间,要注意边界。

题目分析:

因为一个IP是又四个数字组成,且可能存在符号和其他字符,故不能用整型数组处理,应该用字符串的形式存储,

将字符串分为四个部分,逐一处理。

代码如下:

#include<stdio.h>
#include<string.h>
int main()
{
 char a[35];
 while(scanf("%s",a)!=EOF)//多组输入字符串,直至文件的末尾
 {
  char b[30];
  int i=0,j,n=4,flag=0;
  while(n--)//将字符串分为四组进行处理
  {
   int sum=0,number=1,j=0,l,str;
   str=strlen(a);//调用函数算出字符串的长度
   for(;i<=str-1;i++)
   {
    if(a[i]=='.')//用小数点作为每部分的分隔符
    break;
    if(a[i]>='0'&&a[i]<='9')//判断是否都为数字
    {
      b[j]=a[i];
      j++;
    }
    else
    {
     flag=1;
     break;
    }
   }
   i++;//注意i加一,跳过小数点的处理
   if(flag==1)//用标志位进行逐次跳出循环
   {
       break;
      }
   for(l=j-1;l>=0;l--)
    {
     sum= sum + (b[l]-'0') * number;//将字符形式的数字转化为整型数字。
     number = number * 10;
    }
    if(sum <=255 && sum>=0)//判断数字的大小是否符合
     flag=0;
    else
     flag=1;
            if(flag==1)
            {
   break;
      }
  }
  if(flag==0)
  printf("Y\n");
  if(flag==1)
  printf("N\n");
 }
 return 0;
}

最新文章

  1. golang struct扩展函数参数命名警告
  2. CSS背景 顶上 顶下之类详解
  3. JS-DOM对象知识点汇总(慕课)
  4. C语言动态内存分配
  5. TabControl控件的DrawItem事件怎么注册
  6. 超链接的那些事(二): 属性href
  7. iOS-(kCFStreamErrorDomainSSL, -9802)
  8. nodejs学习笔记之mongoDB
  9. js判断图片上传时的文件大小,和宽高尺寸
  10. HDU 5536 Chip Factory 字典树+贪心
  11. php文件上传之单文件上传
  12. 实现一个Memcpy函数:将源指针所指的区域从起始地址开始的n个字节复制到目的指针所指区域
  13. erlang 初体验
  14. 微信公众平台开发实战Java版之如何网页授权获取用户基本信息
  15. break 与 continue
  16. 201771010118《面向对象程序设计(java)》第四周学习总结
  17. flagr 数据库配置
  18. [SP1043] GSS1 - Can you answer these queries I
  19. 全文检索 -- Solr从概念到实战(一)
  20. 前后端分离项目,标准json协议格式参考

热门文章

  1. eclipse 创建springboot项目
  2. Linux内核入门到放弃-内核活动-《深入Linux内核架构》笔记
  3. vue diff 算法学习
  4. JavaScript验证输入的字符是否包含表情
  5. 个人hp笔记本默认设置更改
  6. 使用offsetof对结构体指针偏移操作
  7. auth mysql
  8. iOS 基础:Frames、Bounds 和 CGGeometry
  9. 微信小程序手机预览请求不到数据(最后一条不明所以)
  10. Python——Flask框架