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

}

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

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

时间: 2024-12-30 03:31:49

C语言判别输入的东东的相关文章

C语言判别输入东东

梗概:现在很多用C语言写出来的作业,都是用户输入后,电脑对应操作的.其实这样有没有漏洞呢? 这样的管理系统,相信大家也不陌生,我们这里不是谈它的功能和怎样实现..我们就谈谈最后一行.[输入序号].其实很简单,switch语句,0-6中用case包括就OK了..最后来个default,一切不就好了吗? 是的,很多人会对着软件提示按..但我假设一下:电脑键盘上那么多按钮,一不小心按了字母怎么办?哈哈..很多人会说:那就default语句执行咯.但事实上是不是呢? 我亲自试了试,吓尿了.你猜怎样?整个

(转)loff_t *ppos是什么东东

ssize_t generic_file_read(struct file * filp, char * buf, size_t count, loff_t *ppos) 这是一个文件读函数 我们很容易看出输入参数中 filp 是文件 buf 是文件要读到什么地方去,用户buf count是要读多少东西 那么ppos是什么东东,是当前文件的偏移量嘛?? 但是当前文件的偏移量在filp中有定义呀.struct file { struct list_head f_list; struct dentr

笔记:记录两个新接触的东东- required + placeholder

1.1 required="required" 1.2 placeholder 当用户还没有输入值时,输入型控件可能通过placeholder向用户显示描述性说明文字或者提示信息,这在目前网站中很常见,一些JS框架都会提供类似功能,简单的说下在旧版本中常用的解决方案,为输入控件创建一个label,然后通过CSS控制些label的位置使之覆盖在输入控件上面,当label获得焦点时,浏览器会把焦点指向输入控件.不过有了placeholder,新的浏览器就内置了这一功能,其特性值会以浅灰色样

一个祸害我很久的东东——事件过滤器之按键触发

下面这个东东其实很常见,也很实用,平时上网的时候对之经常见,以为很简单,当然弄懂后,其实发现,他确实蛮简单的,但就是这小东西害了我好久好久啊.... 就是在很多页面中,我们按下特定的键就会触发特定的功能,如果是按下按钮的话,其实还蛮简单的,但是,比如当你输入在输入银行卡号的时候,尤其是电话输入的时候,没有界面上的按钮让你按,一般银行是“请输入银行卡号,以#结束”,当然我不知道,银行用的是什么系统,我只是说自己模拟这个功能的时候,发现其实还蛮伤脑筋的... 不多说,先上代码再解释: from Py

【转】DSP是什么--DSP是神马东东??

原文:http://www.eepw.com.cn/article/272908.htm 导读:本文主要介绍的是DSP是什么,不懂得童鞋们快随小编一起学习一下DSP到底是个神马东东吧! 本文引用地址:http://www.eepw.com.cn/article/272908.htm 1.DSP是什么--简介 DSP的全称为Digital Signal Process,即数字信号处理技术,DSP芯片即指能够实现数字信号处理技术的芯片.近年来,数字信号处理器(DSP)芯片已经广泛用于自动控制.图像处

【转载】不会编程也能写爬虫?可视化爬虫工具是什么东东

原文:不会编程也能写爬虫?可视化爬虫工具是什么东东 随着Scrapy等框架的流行,用Python等语言写爬虫已然成为一种时尚.但是今天,我们并不谈如何写爬虫,而是说说不要写代码就能写出来的爬虫. 爬虫新时代 在早期互联网世界,写爬虫是一项技术含量非常高的活,往大的方向说,爬虫技术是搜索引擎的重要组成部分. 随着互联网技术的发展,写爬虫不再是门槛非常高的技术了,一些编程语言甚至直接提供爬虫框架,例如python的Scrapy框架,它们让写爬虫走入“寻常百姓家”. 在知乎的热门话题“能利用爬虫技术做

终于明白了main(int argc,char *argv[])是个神马东东

以前看到有main(int argc,char *argv[])的程序都需要在dos命令状态下输入命令,也不知道dos怎么打开,所以一直没尝试,今天又碰到一个,所以决定学习一下. 首先写好我的程序,我的是vs2008.程序如下: #include<stdio.h> void main(int argc,char *argv[]) { while(argc>1) { ++argv; printf("%s\n",*argv); --argc; } } 其实这就是课本上的一

JDK8的随笔(01)_Lambda表达式是个神马东东,初尝禁果

Lambda表达式 先写写背景和最基本的东东,泛型加入和各种循环的复杂模式后面再慢慢深入. 需要看JDK8的背景 虽然网上的介绍很多,但是不如自己读一下document后来得正宗. 说一下缘由,突发的这个项目客户貌似是个暴发户,发疯什么都要用最新的,JDK8是否稳定也不管,各种要求最新.Lambda语法全上,各种jdk8最新的东西全往上搞,我靠...WS还有其他的容器是否对8的支持很好也不知道....不过,这也不是坏事,学呗~~~~ 等jdk出到12的时候再回头看看也挺有意思. 本文也是以JDK

【UVA 1151】 Buy or Build (有某些特别的东东的最小生成树)

[题意] 平面上有n个点(1<=N<=1000),你的任务是让所有n个点连通,为此,你可以新建一些边,费用等于两个端点的欧几里得距离的平方. 另外还有q(0<=q<=8)个套餐,可以购买,如果你购买了第i个套餐,该套餐中的所有结点将变得相互连通,第i个套餐的花费为ci. 求最小花费. Input (1 ≤ n ≤ 1000)  (0 ≤ q ≤ 8). The second integer is the the cost of the subnetwork(not greater