2015-08-09 59 views
-2

說,我想從用戶那裏得到幾個整數輸入。在C中使用未知數量輸入的數組?

它可能是10,100,1000(或)10000個輸入,完全取決於用戶。

我想將它們存儲在數組中,並根據需要引用任何第i個輸入。

使用數組可能嗎?

+2

什麼信號輸入的結束?我的意思是,計算機無法知道輸入已經結束。 –

+2

當然這是可能的。只需創建一個10000個元素的數組。這符合您的問題中指定的要求。但我認爲你實際上是在試圖要求別的東西。如果是這樣,請澄清您的問題,以更清楚地描述您的輸入(例如,用戶如何表示不再有輸入)以及任何其他問題的限制。 – kaylum

+0

好的,更清晰一點。說,我會在開始時給出輸入的數量。 然後, 我想聲明指定'沒有。的投入'? 因爲,我想要去任何第i個元素,我認爲Array是選擇! 我不希望這是可能的指針? –

回答

0

試試這個:

#include <stdio.h> 
#include <stdlib.h> 

int readNum() 
{ 
    int c; 
    int buffer = 0; 
    while ((c = getchar()) != EOF && c != '\n' && c >= '0' && c <= '9') 
    { 
     buffer = (buffer * 10) + (c - '0'); 
    } 
    return buffer; 
} 

int *readNumsToArray() 
{ 
    size_t maxSize = 64; 
    size_t i = 0; 
    int *intArr = malloc(sizeof(*intArr) * maxSize); 
    int buffer; 
    while ((buffer = readNum()) != 0) 
    { 
     intArr[i++] = buffer; 
     if (i == maxSize) 
     { 
      maxSize *= 2; 
      intArr = realloc(intArr, sizeof *intArr * maxSize); 
      if (intArr == NULL) break; 
     } 
    } 
    if (buffer == 0) 
     intArr[i] = buffer; 
    return intArr; 
} 

int main() 
{ 
    int *nums = readNumsToArray(); 
    size_t i = 0; 
    while(nums[i] != 0) 
    { 
     printf("%d\n", nums[i++]); 
    } 
    return 0; 
} 

這個程序接受數字,直到0。 個人數字閱讀,直到一個「\ n」字符。 如果你想要第i個元素,你可以只輸入nums [i]。

0

您可以使用malloc函數。 如果希望動態地分配一個數組,以下代碼可被用於:

int * array = malloc(10 * sizeof(int)); 

此計算該10點的整數中的存儲器佔用的字節數,然後請求從malloc的許多個字節,結果分配給一個指針命名array 當程序不再需要動態數組,它應該叫自由返回佔用給自由存儲內存:

free(array); 

來源:Wikipedia

How do i declare an array of undefined or no initial size

Using array for unknown number of inputs in C

+0

如果我想得到列表中第7個元素的值,該怎麼辦? –

+0

@SathyamoorthyR'array [6]'(6因爲在C中,數組索引從0開始) –

相關問題