如何摆脱空白输入的循环

时间:2017-03-26 17:27:48

标签: c scanf

如果用户只是按下回车而没有输入任何内容,我该怎么摆脱这个while循环。

map () {
  //your existing code to extract field1 and field2
  if (field1.equals("AA") || field2.equals("AA") {
    return; // map stops here. you can also increment a counter to count how many such records exist in your dataset
  }
  // add the rest of your existing code here
  context.write(...);
}

3 个答案:

答案 0 :(得分:2)

你做不到。 scanf是一个可怕的功能,应该避免(特别是,你不应该使用它来进行用户输入)。

让用户输入工作的最简单方法是确保所有输入都通过fgets(读取整行)。然后,您可以分析该行,将其转换为数字(例如,使用strtolstrtodsscanf,...),或者随意执行任何操作。

以下是一个例子:

#include <stdio.h>
#include <string.h>

int main(void) {
    while (1) {
        char buf[200];
        int integer;

        printf("enter integer: ");
        fflush(stdout);
        if (!fgets(buf, sizeof buf, stdin)) {
            /* input error or end of file reached */
            break;
        }
        buf[strcspn(buf, "\n")] = '\0';  /* remove trailing newline, if any */

        if (buf[0] == '\0') {
            /* empty line */
            break;
        }

        sscanf(buf, "%d", &integer);
    }
    return 0;
}

答案 1 :(得分:1)

根据我......

  1. 将输入作为字符串
  2. IF inputString等于lineBreak
  3. 然后休息
  4. OTHERWISE将其转换为整数

    int main()
    {
         while(1)
         {
             int integer;
             char input[1024]; 
             printf("enter integer:");
             fgets (input, sizeof (input), stdin);
             if (strcmp (input, "\n") == 0)
                 break;
             integer = atoi(input);
         }
         return 0;
     }
    

答案 2 :(得分:0)

有可能, 使用输入中不允许的内容初始化整数的值 例如,如果输入采用正整数,则使用-1

初始化整数
int main()
{
while(1){
    int integer=-1;

    printf("enter integer:");
    scanf("%d",&integer);
if(integer==-1)
break;
   }
    return 0;
   }