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)!=) { printf("输入的不是合法整数!!"); continue; }
下面我把它写成函数
BOOL IsInt(char *buffer) { int i=atoi(buffer);
int ret;
char buffer_Temp[];
ZeroMemory(buffer_Temp,sizeof(buffer_Temp)/sizeof(char));
wsprintf(buffer_Temp,"%d",i);
if(strcmp(buffer,buffer_Temp)!=)
{
return FALSE;
}
else
{
return TRUE;
} }
启蒙思路谢谢杨中科老师!!!
C语言判别输入的东东的更多相关文章
- 利用C语言判别输入数的位数并正逆序输出
利用C语言判别用户输入数的位数并正逆序输出 #include <stdio.h> void main() { int i, scanfNum, printfNum, temp ...
- 利用C语言判别用户输入数的奇偶性和正负性
要求:利用C语言判别用户输入数的奇偶性和正负性 提示:可以利用%求余数来判别 由题可知 我们需要if..else的结构来实现区分奇偶和正负 区分奇偶我们可以用: if (a % 2 == 0) { p ...
- json是个啥东东
xml 不用说 只要是搞web开发的 没听说谁不知道的 一种类似数据传输格式定义的语言 但是他却不是一个真正的轻量级的东西 其他的不说 只要传输一点很少的数据 经过他那左括号右括号 还有什么属性 一包 ...
- Lambda 表达式 是 个 好东东
Lambda 表达式 是 个 好东东 首先,通过 Lambda 表达式 + 动态语言特性 dynamic , C# 已经 可以 实现 函数式 编程 了 其次, 利用 Lambda, 可以 实现 AOP ...
- (转)loff_t *ppos是什么东东
ssize_t generic_file_read(struct file * filp, char * buf, size_t count, loff_t *ppos) 这是一个文件读函数 我们很容 ...
- [巩固C#] 一、特性是什么东东
阅读目录 关闭 前言 特性是什么? 那么什么是“元数据”? 特性到底是什么? 我们自定义一个特性玩玩 什么是命名参数? 我们来继续要看看AttributeUsage(这个描... 自定义特性可 ...
- 【转】DSP是什么--DSP是神马东东??
原文:http://www.eepw.com.cn/article/272908.htm 导读:本文主要介绍的是DSP是什么,不懂得童鞋们快随小编一起学习一下DSP到底是个神马东东吧! 本文引用地址: ...
- DNS是个什么东东
工作中经常用到或者听到DNS,什么内网服务器,DNS服务器,啥也别想,你问下自己,你知道什么是DNS吗? 如果你非常清楚,OK,那你肯定是鼠标点错了,赶紧关了这个页面吧,如果你不是很清楚,知道一点,那 ...
- 长见识了,知道了collected和Graphite 这两个东东
今天下午的讨论会议中,听到了两个名词collected和Graphite这是神马东东,以前在bingo的时候也没听说过,开完会下去查了下.原来他两是监控系统的啊.以前也从来没做过系统监控方面的项目,这 ...
随机推荐
- 后台传Map到ftl
userInfo是后台传过来的Map <#list userInfo?keys as key> <tr > <td class="case_id" d ...
- WinForm(C#)相关知识和经验的碎片化记录
1.引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 出现"System.Windows.Forms.Ax ...
- linux中的线程同步:生产者、消费者问题
#include <stdio.h> #include <semaphore.h> #include <unistd.h> #include <stdlib. ...
- (转)C# TextBox ReadOnly / Enabled 时,后台无法取值问题
当页面上的某个TextBox 设置了属性ReadOnly = "True" 或 Enabled = "False" 时,在客户端为其赋值后,在后台代码中却无法获 ...
- asp.net core 之多语言国际化自定义资源文件
先说说 asp.net core 默认的多语言和国际化. 官方文档 一:基本使用方法 先要安装 包 Microsoft.AspNetCore.Mvc.Localization (依赖 Microsof ...
- 认识data-xxx 的属性
认识data-xxx 的属性 如, 在bootstrap之data-toggle="table", 不加这个属性,就不能实现框架自带的js效果. 1.它属于 HTML5 的 dat ...
- loj #2025. 「JLOI / SHOI2016」方
#2025. 「JLOI / SHOI2016」方 题目描述 上帝说,不要圆,要方,于是便有了这道题. 由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形.上帝把我们派到了一个有 NNN ...
- .NET 反射
反射是.NET很强大的一个机制. 它就像照妖镜一般的存在.它能调用你的任意私有成员,如:私有构造函数.私有方法.私有字段. 类的构造函数声明为了private,别人无法实例化对象出来?No,No,No ...
- Linux更改文件或目录的所有者和所有组
上节我们说了所有者和所有组的概念, 一个文件它的所有者是谁,属于哪个组的,不同的角色对其的操作权限是不一样的,详细信息请看上节Linux权限管理 这里我们主要说的是怎么去改变这个文件或目录的所有者和所 ...
- php 多语言(UTF-8编码)导出Excel、CSV乱码解决办法之导出UTF-8编码的Excel、CSV
新项目,大概情况是这样的:可能存在多国.不同语种使用者,比喻有中文.繁体中文,韩文.日本等等,开发时选择了UTF-8编码,开发顺利,没有问题.昨天做了一个csv导出功能,导出的东西完全乱了: 设置mb ...