Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
12
返回列表 发新帖
楼主: K_POP
打印 上一主题 下一主题

关于Data Validation ... 求助

[复制链接]

14

主题

1

好友

660

积分

青铜长老

JBT认证K-POP爱好者

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

11#
发表于 2013-3-26 05:52 PM |只看该作者
tomiverson 发表于 2013-3-26 04:28 PM
我找到这个,你或许可以试试看

http://www.dreamincode.net/forums/topic/53355-c-check-if-variable-is ...

第一, isdigit 正如我上面说, 还是不能正常走啊~

所以我才怀疑是不是只能给char用...

第二, 我第一个问题虽然是char, 但是要的效果是即使输入2或更多位数的数字时,可以display error...

这三个好像是不行吧?

恕我愚蠢...


回复

使用道具 举报

0

主题

0

好友

106

积分

高级会员

Rank: 3Rank: 3Rank: 3

12#
发表于 2013-3-27 10:04 AM |只看该作者
本帖最后由 tomiverson 于 2013-3-27 10:06 AM 编辑
K_POP 发表于 2013-3-26 05:52 PM
第一, isdigit 正如我上面说, 还是不能正常走啊~

所以我才怀疑是不是只能给char用...


让我搞清楚你要的

1. 你要只是让user key in alphabet吗? 如果有任何数字就return error?这个declare as char的话,应该可以用isdigit()来看是不是numeric, 是的话就return error?

2. 你的input是直接store 进那个integer declare吗?如果是,何不先store 进去char然后用isdigit()来verify是不是numeric后再store进去integer呢?

根据我找到的,在 http://stackoverflow.com/questio ... s-integer-type-in-c 。他说
a)If the input string starts with a valid integer (such as "12abc"), then the "12" will be read from the input stream and converted and assigned to num, and scanf will return 1, so you'll indicate success when you (probably) shouldn't;

b) If the input string doesn't start with a digit, then scanf will not read any characters from the input stream, num will not be changed, and the return value will be 0;

我不知道是不是你现在面对的问题。

找到这个,应该对你有用
http://www-control.eng.cam.ac.uk ... string_details.html


回复

使用道具 举报

14

主题

1

好友

660

积分

青铜长老

JBT认证K-POP爱好者

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

13#
发表于 2013-3-28 05:58 PM |只看该作者
tomiverson 发表于 2013-3-27 10:04 AM
让我搞清楚你要的

1. 你要只是让user key in alphabet吗? 如果有任何数字就return error?这个decl ...


1. 我让user输入数字, 但是在code里面是char type...虽然user打alphabet会出error....但是user输入13 (注:我只让user选'1' 和'2') program会照拿第一个数字...也就是'1'...

2. 抱歉....发现isdigit的位置很小...我要输入六位数就不行了..我放弃使用isdigit..后来我加个fflush(stdin)就解决了...虽然听说这方法是个不好的习惯....但是目前解决我的问题了....

还有就是, 我把第一个问题的char换去int, 再加fflush(stdin) <===为了阻止infinite loop...



回复

使用道具 举报

0

主题

0

好友

106

积分

高级会员

Rank: 3Rank: 3Rank: 3

14#
发表于 2013-3-29 09:46 AM |只看该作者
K_POP 发表于 2013-3-28 05:58 PM
1. 我让user输入数字, 但是在code里面是char type...虽然user打alphabet会出error....但是user输入13 ( ...

所以第一题是类似menu 选择1,2,3 这样吗?

是的话,用switch 就可以啦

switch( input )
{
    case 1:
        select 1;
        break;
    case 2 :
        select 2;
        break;
    case 3:
        select 3;
        break;
    default : (如果不是key in 1,2,3)
       return error message;
}


回复

使用道具 举报

14

主题

1

好友

660

积分

青铜长老

JBT认证K-POP爱好者

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

15#
发表于 2013-3-29 03:58 PM |只看该作者
本帖最后由 K_POP 于 2013-3-29 04:03 PM 编辑
tomiverson 发表于 2013-3-29 09:46 AM
所以第一题是类似menu 选择1,2,3 这样吗?

是的话,用switch 就可以啦


你完全明白了~~

我就是用switch case....

我第一次给user选 1 和 2

第二次选 1 到 6

第三次 也是1 到 6

如果输入 12

他会帮你选第一个是 1

第二个 是 2 ...

因为char只read 一个东西...你输入两个他会auto read第一个而已...第二个自然就被第二个选项read


回复

使用道具 举报

0

主题

0

好友

106

积分

高级会员

Rank: 3Rank: 3Rank: 3

16#
发表于 2013-4-1 08:47 AM |只看该作者
K_POP 发表于 2013-3-29 03:58 PM
你完全明白了~~

我就是用switch case....

所以你的第一题换去int之后解决了吗?


回复

使用道具 举报

14

主题

1

好友

660

积分

青铜长老

JBT认证K-POP爱好者

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

17#
发表于 2013-4-1 09:51 PM |只看该作者
tomiverson 发表于 2013-4-1 08:47 AM
所以你的第一题换去int之后解决了吗?

是解决了...可是fflush(stdin)酱用对的吗?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2025-1-13 11:51 AM , Processed in 0.094460 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部