| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:怎么在输入的时候只输入一个类型
只看楼主 加入收藏
haibohere
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-1-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
怎么在输入的时候只输入一个类型
我的意思是,比如输入只输入数字,如果键入其他的,例如、字母就报错但是不会终止输入,还可以继续输入数字
比如:我想输入567890 再输入的时候键入了5678y90也可以只是在输入y的时候给个错误声音提示但是不读入y。
搜索更多相关主题的帖子: 其他 
2013-02-08 20:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
逐个字符读入,遇到不合法的字符就舍弃,把合法的拼到结果字符串中去,然后再转换成需要的数据类型。

授人以渔,不授人以鱼。
2013-02-08 23:32
haibohere
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-1-14
收藏
得分:0 
回复 2楼 TonyDeng
能给个简单的例子吗,我才看不就c++好多函数都不清楚 。
2013-02-09 12:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:1 
你用什么环境编程?

授人以渔,不授人以鱼。
2013-02-09 12:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:15 
程序代码:
#include <iostream>
#include <cctype>

int main(void)
{
    char str[80];
    char* p = str;
    int ch;

    printf_s("Please input a integer: ");
    while (((ch = getchar()) != EOF) && (ch != '\n'))
    {
        if (isdigit(ch))
        {
            *p++ = ch;
        }
        else
        {
            putchar(0x07);
        }
    }
    *p = '\0';
    printf_s("Your input is: %s\n", str);
    getchar();

    return 0;
}

注意:使用流输入机制,是不能即时检查按键内容的,必须按Enter之后才开始后面的处理流程,所以这里你只能先输入,回车后才能看到效果,不要每按一下就回车。即时检查按键的程序不能用getchar()函数,与你使用的平台有关。

这段代码其实就是gets()的原理,但你可以检查输入字符防止溢出,并增加各种检测逻辑。

[ 本帖最后由 TonyDeng 于 2013-2-9 13:20 编辑 ]

授人以渔,不授人以鱼。
2013-02-09 12:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
只要你看懂了我这个程序的逻辑,就可以处理任何数据类型的输入,因为最终只是要获得合法的字符串,就能向目标数据类型转换,那有各种各样现成的库函数可用,甚至可以自己写。一定要把人机交互的部分与数据处理分割开来,容错在交互部分做,不要到了数据处理阶段才来检查输入的合法性。这个做法,就是你将来写GUI时的基本思想,所有TextBox之类的输入控件,都是先得到字符串后再转换成所需数据类型的。

授人以渔,不授人以鱼。
2013-02-09 13:01
haibohere
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-1-14
收藏
得分:0 
回复 4楼 TonyDeng
我用的vs1020
2013-02-09 14:24
快速回复:怎么在输入的时候只输入一个类型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022206 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved