for循环卡在无限循环中

时间:2016-11-09 19:57:34

标签: c for-loop

嗨,我知道这将是一个非常简单的问题,但我还是一个初学者。

我在C上练习“for”-loops并想编写一个程序,要求你输入一个数字,并确认你的输入是否真的是一个数字。如果它不是数字,程序必须重复该问题,直到输入实际上是一个数字。

我提出的代码如下:

#include <stdio.h>

int main () {
  float a;
  int n;
  for(n = 0; n == 0;) {
    printf("Insert your number:\n");
    n = scanf("%f", &a);
  }
  printf("You wrote a number!\n");
}

n应该是scanf函数执行的转换次数,因此当该值为1时,我们知道用户实际上写的是数字而不是字符。这段代码看起来很好但是当我运行它时我发现了一个奇怪的错误。如果我把一个数字放在其中只是顺利运行并直接告诉我我写了一个数字。如果我尝试输入一个字符,比如说字母'a',它会进入一个无限循环,只是在终端中不断地打印“Insert your number:”。

看起来他知道n不等于1,因此它在for {}函数中执行命令,但由于某种原因,它一直跳过“scanf”命令。因此,n值永远不会改变,程序会永远保持运行。

导致此错误的原因是什么?以及如何修复它?

0 个答案:

没有答案