【发布时间】:2020-11-23 17:45:41
【问题描述】:
我有这段代码,我希望它反复要求用户输入一个数字,并希望每个数字都存储在一个数组中,直到用户输入 0,然后打印出结果,但它似乎不起作用
我还想补充一点,我并不想使用指针。这个赋值需要我们在没有指针的情况下完成。
这是我的代码:
printf("Enter your commands\n");
int input;
int commandArray[10];
for (size_t i =0; i < 10; i++)
{
if (scanf("%d", &input) != 0)
{
break;
}
else
{
scanf("%d", &input);
commandArray[i] = input;
}
}
for(size_t i = 0; i < 10; i++)
{
printf("%d\n", commandArray[i]);
}
这是我想要的输出
(用户输入): 1 4 5 3 6 0(停止向数组中添加元素)
(程序显示数组中的元素):
1 4 5 3 6
【问题讨论】:
-
if (scanf("%d", &input) != 0)- 我不认为它正在做你打算做的事情。请仔细阅读scanf的返回值,它不是输入的值。 -
你想要
if( scanf(...) != 1 )或if( input == 0 ) -
是的,你是对的,我的错;现在修复了它,但它仍然不起作用,即使在我达到 0 之后,它仍然让我输入数字。@WilliamPursell
-
因为您不检查输入是否为零。
-
在您的循环中,您调用
scanf并读取一个值。如果读取成功,则丢弃该值并读取另一个值。您可能不打算丢弃所有其他输入。