C:从stdin读取,直到按两次Enter键
发布时间:2020-12-16 03:43:04 所属栏目:百科 来源:网络整理
导读:考虑一个简单的程序.它必须从stdin中获取5个数字的序列并打印它们的总和.未说明将采用多少行输入,但如果换行符被取两次(或按两次Enter键),程序必须终止. 例如, 输入: 1 1 1 1 12 2 2 2 23 3 3 3 3/n/n 输出: 51015#include stdio.hint main(){ int n1,n2,n
考虑一个简单的程序.它必须从stdin中获取5个数字的序列并打印它们的总和.未说明将采用多少行输入,但如果换行符被取两次(或按两次Enter键),程序必须终止.
例如, 输入: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3/n /n 输出: 5 10 15 #include <stdio.h> 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)(
man page)从stdin读取单个字符,如果它不是换行符,你可以用ungetc(ch,stdin)(
man page)将其放回去,并使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |