• 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;
     }
    
    }

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

  • 相关阅读:
    关于Response.End的亦常
    关于web.config
    本地打印机的设置
    xml的操作
    javascript定义对象的几种简单方法
    WindowsXP下共享无线网络设置步骤
    第四章:使用Rich控件
    第五章母版页
    第八章数据访问概述
    对lock(obj)中的obj的理解
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/3789235.html
Copyright © 2020-2023  润新知