[英]C Program: Ask a user to define an array's length
我是C語言的新手。我想嘗試一種可以要求用戶定義數組長度的方法。 你們能舉個例子嗎? 我知道這項重要工作,因為它給我帶來了細分錯誤。 只需要一個例子,這樣我就可以重寫我的代碼。 謝謝!
case 3:
srand(time(NULL));
printf("How many time do you want to roll a dice? ");
scanf("%d", &DiceRoll);
for (k = 0; k < DiceRoll;++k)
{
MyArray[p] = rand()% 6 +1;
}
DiceFill(MyArray,DiceRoll);
break;
您可以使用malloc()
分配緩沖區。
int* MyArray; /* declaretion of pointer variable: use the type you want to use for element */
/* ... */
case 3:
srand(time(NULL));
printf("How many time do you want to roll a dice? ");
if (scanf("%d", &DiceRoll) != 1) /* you should check if readings are successful */
{
puts("read error");
break;
}
MyArray = malloc(sizeof(*MyArray) * DiceRoll); /* allocate buffer */
if (MyArray == NULL) /* check if allocation is successful /*/
{
perror("malloc");
break;
}
for (k = 0; k < DiceRoll;++k)
{
MyArray[p] = rand()% 6 +1;
}
DiceFill(MyArray,DiceRoll);
break;
注意:您對srand()
的使用並不完全不好,但是有氣味。 相關文章: c-srand()—為什么只調用一次? - 堆棧溢出
上面的代碼存在一些問題,因為您僅將最后一個結果放入MyArray [p]中,所以用戶要求擲骰子的次數無關緊要(在for循環中p不會改變)。
要回答您的問題,您可以在人們回答后使用malloc,如下所示:
int *MyArray = malloc(sizeof(int) * some_array_size);
從C-90開始,您還可以像這樣在堆棧上分配數組:
int[some_array_size] MyArray;
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.