| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 912 人关注过本帖
标题:关于scanf的输入问题
只看楼主 加入收藏
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:9 
关于scanf的输入问题
#include<stdio.h>
void main()
{
  int i;
  scanf("%d",&i);
  printf("%d",i);
}

就比如这样一个简单的程序,本来应该要输入int型的数,如果我输入一个字符呢?那样应该要有个提示现在输入的数据有误,让你重新输入,怎么达到这一要求啊????
2013-09-09 23:27
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
收藏
得分:1 
要用到字符判断函数,问下度娘,

大神永远不能体会菜鸟们之间的惺惺相惜,
2013-09-09 23:32
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
收藏
得分:0 
回复 2楼 fc176154001
getchar吗?不会那么简单吧?

树叶的离去,是风的追求、还是树的不挽留???
2013-09-09 23:36
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
收藏
得分:2 
恩,用c=getchar()输入,然后用if(int isalnum(int c)==0)判断,

大神永远不能体会菜鸟们之间的惺惺相惜,
2013-09-10 00:03
陨灭
Rank: 2
等 级:等待验证会员
帖 子:44
专家分:65
注 册:2013-4-21
收藏
得分:3 
scanf的返回值是成功读入的数据个数,该例子中如果输入的是a2之类,则返回值是0,而345这样的正确数字则返回1,如果输入的是3a4之类,则其返回值是1,输出的是3;对于最后一种情况里也想杜绝的话,只能一个一个字符的输入并判断,最好存入字符串中,然后使用atoi等函数转化
收到的鲜花
  • rjsp2013-09-10 08:18 送鲜花  1朵   附言:我很赞同

1@w-h.win
2013-09-10 00:06
fc176154001
Rank: 2
来 自:四川阆中
等 级:论坛游民
帖 子:87
专家分:96
注 册:2013-6-16
收藏
得分:1 
同意楼上,我那个方法有问题,不好意思

大神永远不能体会菜鸟们之间的惺惺相惜,
2013-09-10 00:10
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
收藏
得分:1 
scanf在本程序里只接受整型字符,如果输入字符A而非一个数字,这时scanf停在那里,并把A(或者不管是什么)放回输入。没有把任何值赋给指定的变量,下一次如果还用scanf读取输入,它就在A处重新开始。当然,如果不读取输入,scanf的返回值是0,因此可以根据返回值判断是否遇到字母之类的数从而需要重新输入,不过此时要用getchar语句吸收这个A,否则它永远不会越过去从而读取下一个数。
我根据楼主的改进需求描述把代码改了改:
#include<stdio.h>
int main(void)
{
  int i;
  while(!scanf("%d",&i))
  {

   printf("输入错误,请重新输入\n");
   while(getchar()!='\n')\\这两行就实现吸收错误的输入,包括每次输入最后的回车,否则下次输入不能进行
        continue;

  }
printf("%d",i);
return 0;
}

2013-09-11 19:06
蚂蚁学习
Rank: 2
等 级:论坛游民
帖 子:7
专家分:13
注 册:2013-9-12
收藏
得分:1 
同意楼上   
2013-09-13 22:05
米兰的大铁匠
Rank: 2
来 自:天外
等 级:论坛游民
帖 子:61
专家分:84
注 册:2013-7-16
收藏
得分:1 
输入一个字符 一般会转换成ASSII码的,
2013-09-13 22:12
余加东
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2013-9-22
收藏
得分:0 
同意,ascii判断比较好
2013-09-22 11:40
快速回复:关于scanf的输入问题
数据加载中...
 
   



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

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