可能重复:
使用 ANSI C 的动态数组
我正在尝试用用户输入的值填充一个数组。但是,我事先不知道我的数组会有多少个值,或者用户将输入多少个值。用户一次输入一个值,该值存储在数组中,然后用户再次提示输入另一个值,依此类推,直到他输入负数。当用户输入负数时,程序会打印出用户迄今为止输入的所有正值(不是负数,因为它本质上仅用于终止程序)。
我的问题是:
1)如何在事先不知道它有多大的情况下声明数组?
2)如何扫描用户输入?例如,我正在考虑这样的事情来扫描输入并将值分配给数组(这只是代码的一部分,而不是全部,我只是想知道这部分代码是否会在我已完成程序):
...
int working = 0;
int i = 0;
do
{
printf("Enter a positive value \n");
scanf("%d",&x);
if (x >= 0)
{
&array[i] = x;
i++;
}
else
{
printf("You have entered a negative number \n");
working = 1;
}
} while (working = 0);
这段代码是否正确(当然,它不是一个完整的程序)?另外,我如何声明数组,而不知道它有多大(我无法提前知道用户在输入负值之前将输入多少个正值)