如何停止通过输入插入值?

时间:2019-02-22 12:35:54

标签: c

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

例如,用户必须插入浮点值,但是如果它们插入字母,则循环停止。我如何创建这样的东西:

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

4 个答案:

答案 0 :(得分:1)

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);  
}

答案 1 :(得分:0)

您可以使用scanf返回值来中断循环。

示例:

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

scanf如果成功读取浮点数,将返回1。

答案 2 :(得分:0)

尝试使用此代码...我认为它将很好地工作:

#include <stdio.h>

int main() {

  float n;
  int check = 0;
  for( ;; ) {
    check = scanf("%f", &n);
    if (check != 1) break;
    printf("%f\n ", n);
  }

  return 0;
}

答案 3 :(得分:0)

如果希望在不需要记住值的情况下使用查询类型输入,则可以使用这种非常简单的语法

    float n;
    while(scanf("%f",&n)){
    printf(" %f",n);
    }

这将在输入字符时中断。
如果您需要更多预防措施,请使用Jabberwocky的答案。