为了账号安全,请及时绑定邮箱和手机立即绑定

c语言 在使用for语句给数组赋值的时候,如果输入字母,或输入类似23空格5223,如何清空输入的错误数据

c语言 在使用for语句给数组赋值的时候,如果输入字母,或输入类似23空格5223,如何清空输入的错误数据

C
农民爸爸 2016-04-09 19:19:40
如下面给数组赋值.int mian(){    int a[10];    int i;       for (i =0; i<10; i++)    {        scanf("%d", &a[i])    }    return 0;}如果实现,如果输入的是字母,让用户重新输入当前元素或输入 数字 空格 数字 留下的缓存如何清除,不影响下个元素的输入.求大神帮帮忙.
查看完整描述

2 回答

已采纳
?
qq___524

TA贡献171条经验 获得超74个赞

  1.  实现,如果输入的是字母,让用户重新输入当前元素

    这个比较好实现,根据scanf的返回值来判断输入的是不是数字,如果scanf返回1,则输入的是数字,如果返回值是0,则输入的不是数字。可以用一个整型变量存放scanf的返回值,然后根据scanf的返回值来进行下一步操作。(注:scanf的返回值是成功输入的个数,如果输入的是数字,则成功输入1个变量,返回1. 如果输入的是字母,则这次未成功输入,返回的是0)

  2. 输入 数字 空格 数字 留下的缓存如何清除,不影响下个元素的输入.

    一种方法是,scanf("%d", &a[i]);后面加上一个gets(str);其中str是一个字符数组的名字,把数字后面所有的内容全部输入到str里面。另一种方法是scanf("%d", &a[i]);后面加上一个fflush(stdin);清空输入缓冲区内容

查看完整回答
1 反对 回复 2016-04-09
?
农民爸爸

TA贡献6条经验 获得超0个赞

大概明白了,谢谢大神帮忙.

查看完整回答
反对 回复 2016-04-10
  • 2 回答
  • 0 关注
  • 1639 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信