键入意外的输入会导致循环失败(C)

时间:2016-10-13 04:34:26

标签: c loops

在测试程序(在C中)以防止任何错误时,我在程序要求输入整数时偶然点击\。然后while循环开始失败。一个例子:

int a;
while(1){
    scanf("%d",&a);printf("%d\n",a);
    a--;
    if(a==0){break;}
}

每当我键入数字时,都应该打印相同的数字。但是当我输入一个字符时,它会打印出前一个输入下面的所有数字,然后开始打印它下面的所有数字,直到1。 任何人都可以提供解决这个问题的线索吗?非常感谢。

编辑:这个程序只是bug的一个例子,实际程序比这个大得多。

2 个答案:

答案 0 :(得分:0)

您不需要使用while循环来打印您输入的数字。这就够了:

int a;
    scanf("%d",&a);
    printf("%d\n",a);

或者如果您想从输入数字打印到One:

int a;
while(1){
    scanf("%d",&a);
    printf("%d\n",a);
    a--;
    if(a<=0){break;}
}

使用a<=0进行比较,因为即使您输入了错误的输入,它也不会创建无限循环。

答案 1 :(得分:0)

在这种情况下,你不需要 - 。

int a;
while(1){
   scanf("%d",&a);
   printf("%d\n",a);
   if(a==0)
      break;
}