标题:如何限制scanf语句的输入?
只看楼主
温酒斩化腾
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-3-28
结帖率:72.73%
已结贴  问题点数:20 回复次数:6 
如何限制scanf语句的输入?
#include<stdio.h>
   int main()
   {
       int score,a,c;
       char grade,z;
       do
       {
               printf("Please input score:");
               c=scanf("%d",&score);
               z=getchar();
               a=((score<=100&&score>=0));
               if(!a)
               printf("Input error!\n");
       }while(!a);
      
}为什么c=scanf("%d",&score);这里加‘c='就可以循环输入,不加就不能循环输入?
这里的循环输入是指输入一个非数字字符后还能继续输入下一个字符

[此贴子已经被作者于2017-4-5 22:17编辑过]

搜索更多相关主题的帖子: include 如何 
2017-04-05 22:01
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:10 
#include<stdio.h>
   int main()
   {
       int score,a;
       do
       {
               printf("Please input score:");
               scanf("%d",&score);  //a=scanf("%d",&score); 输入成功返回1(true),失败返回0
               a=score;
               if(!a)
               printf("Input error!\n");
       }while(a>0&&a<=100); //循环条件

}

你那个getchar也不用去接收换行。 只有当是字符的时候的才需要处理

[此贴子已经被作者于2017-4-5 22:37编辑过]

2017-04-05 22:35
温酒斩化腾
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-3-28
得分:0 
回复 2楼 Emotiona
好像不行啊
2017-04-05 22:38
温酒斩化腾
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-3-28
得分:0 
回复 2楼 Emotiona
我若是不加Getcahr的话,当我输入非数字时就会陷入一直输出error的死循环了
2017-04-05 22:41
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 4楼 温酒斩化腾
你要输入其他的任意字符,就用字符串做,然后转数字。不然处理不好的。谁知道你输入的那个东西是数字还是字符呢?如果%d %f这些读字符是录入失败的,排在缓冲区。
2017-04-06 08:29
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 5楼 Emotiona
你要这样处理也可以,判断下你那个c返回值是什么。
2017-04-06 08:31
peter张
Rank: 2
等 级:论坛游民
威 望:1
帖 子:56
专家分:98
注 册:2017-3-7
得分:10 
占楼学习。
2017-04-06 13:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475810-1-1.html




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

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