猿问

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

如下面给数组赋值.

int mian()

{

    int a[10];

    int i;

   

    for (i =0; i<10; i++)

    {

        scanf("%d", &a[i])

    }

    return 0;

}

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

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

求大神帮帮忙.


农民爸爸
浏览 1640回答 2
2回答

qq___524

 实现,如果输入的是字母,让用户重新输入当前元素这个比较好实现,根据scanf的返回值来判断输入的是不是数字,如果scanf返回1,则输入的是数字,如果返回值是0,则输入的不是数字。可以用一个整型变量存放scanf的返回值,然后根据scanf的返回值来进行下一步操作。(注:scanf的返回值是成功输入的个数,如果输入的是数字,则成功输入1个变量,返回1. 如果输入的是字母,则这次未成功输入,返回的是0)输入 数字 空格 数字 留下的缓存如何清除,不影响下个元素的输入.一种方法是,scanf("%d", &a[i]);后面加上一个gets(str);其中str是一个字符数组的名字,把数字后面所有的内容全部输入到str里面。另一种方法是scanf("%d", &a[i]);后面加上一个fflush(stdin);清空输入缓冲区内容

农民爸爸

大概明白了,谢谢大神帮忙.
随时随地看视频慕课网APP
我要回答