c/c++语言开发共享C:从stdin读取,直到按两次Enter键

考虑一个简单的程序。 它必须从stdin中获取5个数字的序列并打印它们的总和。 没有说明将采用多少行输入,但如果换行符被取两次(或按两次Enter键),程序必须终止。

例如,

输入:

1 1 1 1 1 2 2 2 2 2 3 3 3 3 3/n /n 

输出:

 5 10 15 #include  int main() { int n1, n2, n3, n4, n5; int sum; while (/*condition*/) { scanf ("%d %d %d %d %dn", &n1, &n2, &n3, &n4, &n5); sum = n1 + n2 + n3 + n4 + n5; printf ("%dn", sum); } return 0; } 

唯一的问题是我不知道while循环中必须有什么条件。 一点点的帮助将不胜感激。

提前致谢。

    使用getc(stdin) ( 手册页 )从stdin读取单个字符,如果它不是换行符,你可以用ungetc(ch, stdin) ( 手册页 )将其放回去,并使用scanf读取你的号码。

     int main() { int sum = 0; int newlines = 0; int n = 0; while(1) { int ch = getc(stdin); if(ch == EOF) break; if(ch == 'n') { newlines++; if(newlines >= 2) break; continue; } newlines = 0; ungetc(ch, stdin); int x; if(scanf("%d", &x) == EOF) break; sum += x; n++; if(n == 5) { printf("Sum is %dn", sum); n = 0; sum = 0; } } } 

    在线演示: http : //ideone.com/y99Ns6

    好吧,您可以简单地将scanf调用置于条件中,并检查它是否成功设置了变量。

     #include  int main() { int n1, n2, n3, n4. n5; int sum; while (scanf ("%d %d %d %d %dn", n1, n2, n3, n4, n5) != EOF) { sum = n1 + n2 + n3 + n4 + n5; printf ("%dn", sum); } return 0; } 

    (无法自己测试此代码)

      以上就是c/c++开发分享C:从stdin读取,直到按两次Enter键相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年1月28日
      下一篇 2021年1月28日

      精彩推荐