码迷,mamicode.com
首页 > 编程语言 > 详细

C语言判别输入东东

时间:2014-06-08 19:04:27      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:c   style   blog   a   http   tar   

梗概:现在很多用C语言写出来的作业,都是用户输入后,电脑对应操作的。其实这样有没有漏洞呢?

    bubuko.com,布布扣
这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现。。我们就谈谈最后一行。【输入序号】。其实很简单,switch语句,0-6中用case包括就OK了。。最后来个default,一切不就好了吗?

是的,很多人会对着软件提示按。。但我假设一下:电脑键盘上那么多按钮,一不小心按了字母怎么办?哈哈。。很多人会说:那就default语句执行咯。但事实上是不是呢?

我亲自试了试,吓尿了。你猜怎样?整个软件崩溃了。。why?【读者们可以试试】

因为switch语句中判断的是int类型,你却输入个char 类型的。当然会崩溃啦!!有人聪明了!那判断输入的是否为数字就可以啦。。怎样判断呢?

1、字母有数值范围的,那个范围之内的数就报错。。但这是好方法吗?我的软件可以有200个选项吧?不可以说以后的就不能用了吧?所以这个方法不好!!

下面介绍个很有用的方法!具体思路是:

1、用char buffer[256];来接受输入内容,

2、然后用int i=atoi(buffer);转成int 类型。3、用wsprintf(buffer_Temp,"%d",i);。

4、if(strcmp(buffer,buffer_Temp)!=0)

{

printf("输入的不是合法整数!!");

continue;

}

下面我把它写成函数

BOOL IsInt(char *buffer)

{

 int i=atoi(buffer);
 int ret;
 char buffer_Temp[256];
 ZeroMemory(buffer_Temp,sizeof(buffer_Temp)/sizeof(char));
 wsprintf(buffer_Temp,"%d",i);
    if(strcmp(buffer,buffer_Temp)!=0)
 {
  return FALSE;
 }
 else
 {
  return TRUE;
 }

}

启蒙思路谢谢杨中科老师!!!

C语言判别输入东东,布布扣,bubuko.com

C语言判别输入东东

标签:c   style   blog   a   http   tar   

原文地址:http://www.cnblogs.com/liuweimingcprogram/p/3776180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!