c/c++语言开发共享如何在C中使用EOF stdin

我需要将坐标输入到数组中,直到遇到EOF,但我的代码中出现了错误。 我用ctrl + Z,ctrl + D.

int main() { int x[1000],y[1000]; int n=0,nr=0,a,b,i; printf("Enter the coordinates:n"); while(scanf ( "%d %d ", &a, &b) == 2) { x[n]=a; y[n]=b; n++; } if (!feof(stdin)) { printf("Wrongn"); } else { for(i=0;i<n;i++) printf("%d %dn", x[i], y[i]); } return 0; } 

    我建议使用

     while(!feof(stdin) && scanf ( "%d %d ", &a, &b) == 2) 

    实际上最好 (之前没有!)某些输入操作之后测试feof ,所以:

     while (scanf("%d %d ", &a, &b) == 2 && !feof(stdin)) 

    顺便说一句,在许多系统上, stdin缓冲的,至少对于交互式终端(但是当stdin是管道(7)时可能不行),参见setvbuf(3)

    在Linux和POSIX上,您可以考虑使用getline(3)读取每一行(如果从终端读取,甚至使用readline(3) ,因为readline提供编辑function),然后使用例如sscanf(3)解析该行(也许还使用%n )或strtol(3)

    我在代码中看到的唯一真正的问题是scanf格式字符串中的额外空格。 这些空格告诉scanf消耗输入上的空格字符,这使得scanf在返回非空白字符(例如字母,数字,标点符号或EOF)之前不会返回到您的代码。

    结果是在输入两个数字然后输入后 ,您必须在程序转义while循环之前两次键入CtrlD (在DOS / Windows中为CtrlZ )。

    需要了解更多c/c++开发分享如何在C中使用EOF stdin,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享如何在C中使用EOF stdin相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979428.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐