【发布时间】:2020-06-23 08:31:07
【问题描述】:
我想创建一个无限循环,以便我能够向用户询问最多 2 个输入,并将它们存储到一个数组 (a) 中,然后打印这些数组值。然后我希望它重新启动,并重复这个询问和重复的过程。使用我当前的代码,一旦我输入值并声明函数结束 (EOF),控制台就会无限打印出这些值,而不是重新启动并要求新值。
#include <stdio.h>
int main (void) {
int a[2];
int i = 0;
while (1 < 2) {
while(scanf("%d", &a[i]) != EOF) {
i++;
//i == number of inputs (max is 2)
}
int j = 0;
while(j < i) {
printf("%d ", a[j]);
j++;
}
}
return 0;
}
我的假设是 scanf("%d", &a[i]) 值在被声明为 EOF 后没有重置,但我不完全确定如何做到这一点。
【问题讨论】:
-
EOF是 file 的结尾,它有效地将输入流stdin(scanf从中读取)标记为无效,您无法继续从中读取。您需要想出另一种检测“input 结束”的方法(例如,在读取两个值后停止读取)。 -
"//i == 输入数(最大值为 2)" 您的代码似乎并不关心该最大值。
-
所以算法是
do_forever(input 2 numbers; print these numbers)? -
这能回答你的问题吗? Recover stdin from eof in C