重複の可能性:
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);
このコードは正しいですか (もちろん、完全なプログラムではありません)。また、どのくらいの大きさになるかを知らずに配列を宣言するにはどうすればよいですか (ユーザーが負の値を入力する前に入力する正の値の数を事前に知る方法はありません)。