gpt4 book ai didi

C:从 stdin 读取直到按下 Enter 两次

转载 作者:太空狗 更新时间:2023-10-29 17:19:48 30 4
gpt4 key购买 nike

考虑一个简单的程序。它必须从 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 %d\n", &n1, &n2, &n3, &n4, &n5);
sum = n1 + n2 + n3 + n4 + n5;
printf ("%d\n", 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 %d\n", sum);
n = 0;
sum = 0;
}
}
}

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

关于C:从 stdin 读取直到按下 Enter 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635686/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com