zoukankan      html  css  js  c++  java
  • C语言判别输入的东东

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

       
    这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现。。我们就谈谈最后一行。【输入序号】。其实很简单,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;
     }
    
    }

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

  • 相关阅读:
    【转】final 关键字
    【转】安装Fiddler2+JsonViewer插件
    【转】SAP SD定价技术分析
    【转】SAP PP 顾问面试考试试题及资料
    【转】Hibernate数据过滤
    【转】与计划有关的生产数据
    【转】销售凭证类别
    将MyEclipse中的项目导入到Eclipse中报错的解决放法,将项目打war包部署服务器
    查看Android下生成的.db数据库
    删除快速启动栏的快捷方式 pplive
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/3789235.html
Copyright © 2011-2022 走看看