在while循环中使用时如何访问scanf的返回值?

How to access return value of scanf when used in a while loop?

提问人: 提问时间:10/26/2021 更新时间:10/26/2021 访问量:157

问:

此代码的目的是等待用户输入两个整数,然后对它们执行某些操作。但是,我不希望我的程序在读取 2 个值时停止,相反,我希望它遵循 while 循环中的指示,完成后,要求用户提供更多整数。

int main (void){
    while(scanf("%d %d", &order, &system) != EOF){
    
        if(order < 0 || system < 2 || system > 36){
            printf("Invalid input!\n");
            return 1;
        }
        // Do something with the numbers 

    }
    return 0;
}

我在这里面临的问题是,我无法弄清楚如何存储scanf的返回值,以便我可以检查它是否确实获得了两个整数。通常我会写 if( scanf ( ... ) != 2 ) { return 1; }。

谢谢!

c 扫描 eof

评论

0赞 Fra93 10/26/2021
使用 scanf sekrit.de/webdocs/c/beginners-guide-away-from-scanf.html 之前必须阅读指南
0赞 Fra93 10/26/2021
无论如何,如果你使用“if - else”,你可能会得到你想要的。
0赞 Tibrogargan 10/26/2021
作业的结果是 LHS,因此您可以执行以下操作while((result = scanf(...)) != EOF) {
0赞 ikegami 10/26/2021
...但这需要提供比需要更大的范围result

答:

1赞 ikegami 10/26/2021 #1
while (1) {
   int rv = scanf("%d %d", &order, &system);
   if (rv == EOF) {
      ...
   }

   ...
}