首页 > 解决方案 > 如何停止通过输入插入值?

问题描述

如果用户必须插入多个值然后他们想停止我该怎么办?

例如,用户必须插入浮点值,但如果他们插入一个字母,则循环停止。我怎样才能创建这样的东西:

for(;;){
    scanf("%f", &n);
    if(!isdigit(n))
         break;
}

标签: c

解决方案


scanf是交互式用户输入的糟糕选择。特别是因为如果用户键入了一些scanf不期望的内容,则该输入将保留在内部输入缓冲区中,并且很可能会在scanf程序的后续部分中引起麻烦。

我会去做这样的事情:

#include <stdio.h>

int main(int argc, char * argv[])
{
  float n;
  char input[100];
  for (;;) {
      fgets(input, sizeof(input), stdin);
    if (sscanf(input, "%f", &n) != 1)
      break;

    printf("User input = %f\n", n);
  }

  printf("Last line entered by user: %s", input);  
}

推荐阅读