解题思路:用字符串分割函数strtok(),以.去分割字符串,然后判断分割的每一个字符串是否合法,如果字符串中存在0-9以外的字符,非法,停止判断;如果字符串转换为数字之后超过255,非法,停止判断;

注意事项:

参考代码:#include

#include

int main()

{

char s[35];

int i,k,y,n;

char *t;

while(scanf("%s",s)!=EOF)

{

if(strlen(s)>15) //合法的IP地址的字符串不会超过15位

{

printf("N\n");

continue;

}

y=1;

t=strtok(s,"."); //用.分割字符串 ,分割之后把首地址赋值给t

while( t!= NULL )

{

n=0; k=1;

for(i=0;t[i];i++) //判断t是否合法

{

if(t[i]>='0' && t[i]<='9')

n=n*10+t[i]-'0';

else //如果不是数字0-9,则是非法的,不用继续

{

k=0; break;

}

if(t[0]=='0' && strlen(t)!=1) //如果ip中出现01,或者012这种情况,则是不合法的

{

k=0;break;

}

}

if(k==0 || n>255) //如果t中的字符是非法的或者转换为数字超过255,则是非法的,不用继续

{

y=0; break;

}

t=strtok(NULL,"."); //继续用.分割字符串 ,分割之后把首地址赋值给t

}

if(y==1) printf("Y\n");

else printf("N\n");

}

return 0;

}

几个月后,当有人问我这个程序时,哪个写得比较简单时,我看了其他大佬写的程序,写得很好,但是无法判断形如:12.23.123.23a这种不合法的IP,我修改了一下程序,可以判断这种不合法的IP;另外由于宏定义没有加上括号,也无法判断形如:12.-123.23.34,这种不合法的IP,我也做了修改。程序如下:#include

#include

#define Judge(n) ((n>=0 && n<=255)?1:0)

int main()

{

char IP[30];

int a, b, c, d;

char e;

while(scanf("%s",IP) != EOF)

{

//IP地址按如下格式获取应该获取到4个值,否则不是IP。

if(sscanf(IP, "%d.%d.%d.%d%c", &a, &b, &c, &d,&e) == 4)

{   //如果最后一个数字后面还有其他字符,则字符肯定能获取到,并保存到变量e中

//这样sscanf函数返回就应该是5,而不是4了 ,这样可以把不合法的ip去掉,

// 例如:12.23.34.54a ,这种不合法的IP

if(Judge(a) && Judge(b) && Judge(c) && Judge(d))

printf("Y\n");

else

printf("N\n");

}

else

printf("N\n");

}

return 0;

}

c语言ip判断程序,IP判断 (C语言代码)相关推荐

  1. C语言:编写程序,判断某一年是否是闰年

    题目:编写程序,判断某一年是否是闰年. 解决此问题我们使用分支结构程序设计语句--if语句 if语句用来判断是否满足条件,如果满足闰年条件,则输出闰年(Leap year):不满足则输出平年(Comm ...

  2. c语言第一次作业程序题pta,c语言第一次作业程序题pta

    c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...

  3. c语言开发窗口程序,怎么用c语言做一个界面?

    https://m.zjurl.cn/answer/6697137038547747083/?app=news_article&app_id=26&share_ansid=669713 ...

  4. python语言只能以程序方式执行_Python语言程序设计

    零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有比较多的学校使用python作为入门编程语言.面向对象程序设计.连接数据源等基本知识,然后结 ...

  5. c语言回文串判定代码_C语言编写一个程序,判断输入的一个字符串是否是回文。...

    展开全部 源代码2113如下: #include int main() { int n, reversedInteger = 0, remainder, originalInteger; printf ...

  6. java质数判断程序_java判断一个数是否为素数/质数

    质数(prime number)又称素数,定义为一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数. 第一个思路 假如我们需要判断数字是33 ...

  7. c语言程序设计学生程序查询,《c语言程序设计报告-学生信息管理系统》.doc

    <c语言程序设计报告-学生信息管理系统> 中南大学 ? ? C语言程序设计实践报告 ? ? ? ? ? 题 目 学生信息管理系统 学生姓名 张眼 指导教师 刘伟荣 学 院 信息科学与工程学 ...

  8. c语言魔方还原程序案例,利用C语言玩转魔方阵实例教程

    魔方阵 魔方阵,古代又称"纵横图",是指组成元素为自然数1.2-n的平方的n×n的方阵,其中每个元素值都不相等,且每行.每列以及主.副对角线上各n个元素之和都相等. 如3×3的魔方 ...

  9. c语言内存驻留程序,关于用C语言检查内存驻留问题的研究

    编制某些实用程序时,有时会遇到检查某一内存驻留程序是否驻留的问题,为了实现这一特殊功能,往往要书写很长的代码,有时还很难达到目的.事实上,语言系统已经提供了特定的程序来解决刚才提到的问题,因此有必要对 ...

  10. 二级计算机c语言模拟考试程序,计算机二级c语言模拟考试题

    在计算机二级考试中,我们会遇到什么样的考试内容呢?下面是学习啦小编给大家整理的计算机二级c语言模拟考试题,供大家参阅! 计算机二级c语言模拟考试题一级答案 1). 执行以下程序段后的输出结果是( ). ...

最新文章

  1. Tensorflow多线程输入数据处理框架(一)——队列与多线程
  2. Windows下命令行Git无法显示中文问题解决方案
  3. 第六十七篇、OC_UITableView head下拉图片放大的效果
  4. oracle分页查询数据(收藏)
  5. web前端技巧-ES6新特性与重点知识汇总(一)
  6. Spring 思维导图,让 Spring 不再难懂(cache篇)
  7. 计算机组装活动口号,广教育、多技能、求发展喜迎计算机系第五届电脑文化节...
  8. [js] setTimeout的第三个参数有什么用?
  9. Informix IDS 11体系操持(918测验)认证指南,第 4 部门: 机能调优(1)
  10. 网易数帆发布轻舟低代码平台2.0,聚焦中等复杂度企业级应用
  11. bp神经网络预测未来五年数据_基于小波神经网络的数据中心KPI预测
  12. 多线程实战(二)线程同步
  13. 第6次结对作业--郑锦伟古维城
  14. English Resources
  15. Webservice 安全性访问
  16. Linux网络服务(network service)管理
  17. 微信支付:不支持虚拟货币交易 如发现违规行为将予以清退处理
  18. wbs简单介绍以及相关模板截图
  19. 【密码学】一文读懂ZUC算法
  20. mapabc地图开发之定位篇(GPS+谷歌基站定位+高德基站定位)

热门文章

  1. 短视频从入门到秃头(二)——拍摄第一条短视频
  2. 树莓派 使用xbox360手柄
  3. netware php_服务器_如何在 Netware 服务器中安装多块网卡,如果网络在扩大时服务器只装 - phpStudy...
  4. SYN flooding
  5. 新浪微博分享图片不改变问题
  6. c语言pow函数原型_c语言中的pow()函数怎么用
  7. 我孩子的毛毯教会了我关于技术和古希腊人的知识
  8. c#中PROCESS的用法
  9. 初高中计算机课程有哪些,中学信息技术课程纲要(最新整理)
  10. c语言判断100的倍数,显示100以内所有9的倍数及其和。急要,请大家帮帮忙~~还有一些题。...