获取用户输入并在必要时停止循环

时间:2017-01-23 05:58:24

标签: c user-input

我需要在给定范围内从用户获取输入整数。我需要得到他们的低和高。但循环并没有停止,我不明白为什么。我认为我的条件很好,但循环不会停止。

int     obtainNumberBetween (const char* descriptionCPtr, int low, int high) {
  char  line[MAX_LINE];
  int   entry;
//  #define     MAX_LINE    256

  // YOUR CODE HERE
 do
  {
    printf("Please enter the lowest number in the range (%d-%d):\n " ,RANGE_LOWEST ,RANGE_HIGHEST);
    fgets(line, 256, stdin);
    low = atoi(line);
    printf ("The value entered is %d\n", low);

  }
  while  ( (entry < low) || (entry > high) );

return(entry);

}

应该是什么的示例输出:

Please enter the lowest number in the range (0-32767): -6
Please enter the lowest number in the range (0-32767): 1
Please enter the highest number in the range (1-32767): 0
Please enter the highest number in the range (1-32767): 32768
Please enter the highest number in the range (1-32767): 512

2 个答案:

答案 0 :(得分:0)

您的entry变量未初始化。所以这一行调用了一个未定义的行为:

while  ( (entry < low) || (entry > high) )

也许您应该将用户输入分配到entry而不是low

答案 1 :(得分:0)

您需要为entry指定一个值。 循环不会停止,因为entry尚未初始化,因此while循环的条件始终为真。

变化 low = atoi(line);

entry = atop(line);

然后添加

low = atoi(entry);
在while循环之后