检测scanf没有输入时

时间:2013-12-05 22:44:26

标签: c scanf

我是C的新手,经过一些研究后无法得到答案。

如果我没有输入(命中回车)到scanf(),我有一个我要终止的while循环。以下不起作用......

int data;
while(1){
    scanf("%d", &data);
    if data == NULL{
        break;
    }
}

2 个答案:

答案 0 :(得分:3)

使用scanf的返回值:

int data;
while (1) {
    int n = scanf("%d", &data);
    if (n != 1)
        break;
    // ...
}

答案 1 :(得分:0)

使用fgets()/sscanf()

int data;
char buf[40];
while (fgets(buf, sizeof buf, stdin) != NULL) {
  if (sscanf(buf, "%d", &data) != 1) break;
  // do stuff with data
}