c语言ip判断程序,IP判断 (C语言代码)
解题思路:用字符串分割函数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语言代码)相关推荐
- C语言:编写程序,判断某一年是否是闰年
题目:编写程序,判断某一年是否是闰年. 解决此问题我们使用分支结构程序设计语句--if语句 if语句用来判断是否满足条件,如果满足闰年条件,则输出闰年(Leap year):不满足则输出平年(Comm ...
- c语言第一次作业程序题pta,c语言第一次作业程序题pta
c语言第一次作业程序题pta 5-1 统计学生平均成绩与及格人数 (15 分)本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于 60 分)的人数.题目保证输入与输出均在整型范围内.输入格 ...
- c语言开发窗口程序,怎么用c语言做一个界面?
https://m.zjurl.cn/answer/6697137038547747083/?app=news_article&app_id=26&share_ansid=669713 ...
- python语言只能以程序方式执行_Python语言程序设计
零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有比较多的学校使用python作为入门编程语言.面向对象程序设计.连接数据源等基本知识,然后结 ...
- c语言回文串判定代码_C语言编写一个程序,判断输入的一个字符串是否是回文。...
展开全部 源代码2113如下: #include int main() { int n, reversedInteger = 0, remainder, originalInteger; printf ...
- java质数判断程序_java判断一个数是否为素数/质数
质数(prime number)又称素数,定义为一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数. 第一个思路 假如我们需要判断数字是33 ...
- c语言程序设计学生程序查询,《c语言程序设计报告-学生信息管理系统》.doc
<c语言程序设计报告-学生信息管理系统> 中南大学 ? ? C语言程序设计实践报告 ? ? ? ? ? 题 目 学生信息管理系统 学生姓名 张眼 指导教师 刘伟荣 学 院 信息科学与工程学 ...
- c语言魔方还原程序案例,利用C语言玩转魔方阵实例教程
魔方阵 魔方阵,古代又称"纵横图",是指组成元素为自然数1.2-n的平方的n×n的方阵,其中每个元素值都不相等,且每行.每列以及主.副对角线上各n个元素之和都相等. 如3×3的魔方 ...
- c语言内存驻留程序,关于用C语言检查内存驻留问题的研究
编制某些实用程序时,有时会遇到检查某一内存驻留程序是否驻留的问题,为了实现这一特殊功能,往往要书写很长的代码,有时还很难达到目的.事实上,语言系统已经提供了特定的程序来解决刚才提到的问题,因此有必要对 ...
- 二级计算机c语言模拟考试程序,计算机二级c语言模拟考试题
在计算机二级考试中,我们会遇到什么样的考试内容呢?下面是学习啦小编给大家整理的计算机二级c语言模拟考试题,供大家参阅! 计算机二级c语言模拟考试题一级答案 1). 执行以下程序段后的输出结果是( ). ...
最新文章
- Tensorflow多线程输入数据处理框架(一)——队列与多线程
- Windows下命令行Git无法显示中文问题解决方案
- 第六十七篇、OC_UITableView head下拉图片放大的效果
- oracle分页查询数据(收藏)
- web前端技巧-ES6新特性与重点知识汇总(一)
- Spring 思维导图,让 Spring 不再难懂(cache篇)
- 计算机组装活动口号,广教育、多技能、求发展喜迎计算机系第五届电脑文化节...
- [js] setTimeout的第三个参数有什么用?
- Informix IDS 11体系操持(918测验)认证指南,第 4 部门: 机能调优(1)
- 网易数帆发布轻舟低代码平台2.0,聚焦中等复杂度企业级应用
- bp神经网络预测未来五年数据_基于小波神经网络的数据中心KPI预测
- 多线程实战(二)线程同步
- 第6次结对作业--郑锦伟古维城
- English Resources
- Webservice 安全性访问
- Linux网络服务(network service)管理
- 微信支付:不支持虚拟货币交易 如发现违规行为将予以清退处理
- wbs简单介绍以及相关模板截图
- 【密码学】一文读懂ZUC算法
- mapabc地图开发之定位篇(GPS+谷歌基站定位+高德基站定位)
热门文章
- 短视频从入门到秃头(二)——拍摄第一条短视频
- 树莓派 使用xbox360手柄
- netware php_服务器_如何在 Netware 服务器中安装多块网卡,如果网络在扩大时服务器只装 - phpStudy...
- SYN flooding
- 新浪微博分享图片不改变问题
- c语言pow函数原型_c语言中的pow()函数怎么用
- 我孩子的毛毯教会了我关于技术和古希腊人的知识
- c#中PROCESS的用法
- 初高中计算机课程有哪些,中学信息技术课程纲要(最新整理)
- c语言判断100的倍数,显示100以内所有9的倍数及其和。急要,请大家帮帮忙~~还有一些题。...