无限循环不等待在C中再次扫描数据

时间:2017-02-06 12:38:59

标签: c

var results = data.filter(function(user) {
  var roles = user.roles;

  return roles.filter(function(role) {
    return role == 'clientsupervisor';
  });
});

如果用户输入的值不是整数,当我使用char输入运行上面的代码时,我想再次继续扫描它正在运行无限循环。请提出原因或任何解决方案......?

2 个答案:

答案 0 :(得分:0)

如果为上述程序输入一个字符a,则它与%d不匹配,因此它将保留在缓冲区中。下一次在循环中,它将再次与%d不匹配,您将进入无限循环。

您可以执行的操作是从缓冲区中读取,直到遇到换行符。第二个循环将删除任何字符,直到并包括换行符。

#include <stdio.h>

int main() {
    int i;
    char dummy;
    while (1) {
        printf("Enter no?\n"); // step -1

        scanf(" %d", &i)
        if (i > 0)   // step-2
            printf("Num=%d\n", i);
        else
            printf("Entered character.Pls enter int\n");

        do{
            scanf("%c",&dummy);
        }while (dummy != '\n');        // Add this loop
    }
}

答案 1 :(得分:0)

public class Foo
{
    public Foo()
    {
        Bar = 1;
    }

    public int Bar { get; }
}