【发布时间】:2015-02-25 15:30:21
【问题描述】:
我查看了多种解决方案,但没有一个对我有用。
我要求用户在循环中输入数字,但如果用户输入特定数字,则循环应该中断。
这是我到目前为止所得到的。
#include <stdio.h>
#include <stdlib.h>
#define MAXNUMBERS 5
int getNumbers(int array[])
{
int i;
int n = 0;
printf("Enter max. %d numbers, enter empty line to end:\n", MAXNUMBERS);
for (i = 0; i < MAXNUMBERS; i++)
{
scanf("%d", &array[i]);
fflush(stdin);
n++;
if (array[i] == '5')
{
break;
}
}
return n;
}
int main()
{
int array[MAXNUMBERS];
int amount_numbers;
amount_numbers = getNumbers(array);
printf("Numbers entered: %d\n", amount_numbers);
printf("First three: %d %d %d", array[0], array[1], array[2]);
return 0;
}
-
输入:
1 5 4 3 2 -
输出:
Numbers entered: 5 First three: 1 5 4
如果用户输入5,循环应该会中断。
我以 5 为例,稍后我希望它与空行有关。但它甚至不适用于5。
它只是在用户输入5后不断提示用户输入另一个数字。
【问题讨论】:
-
如果我稍后在我先输入 9 时执行此操作:
if (array[0] == 9) { printf("Success\n"); }它有效。所以错误一定在其他地方。 -
fflush(stdin) 是未定义的行为。不要使用它。
-
建议我可以改用什么?我想防止用户一次输入多个数字。下面有人有解释。
-
@LorenzLeitner 你的意思是
2数字还是2整数? -
您可以使用
fgets()和strtol()进行检查。