簡體   English   中英

C程序:要求用戶定義數組的長度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM