2013-02-22 29 views
1

所以我正在寫一個程序,從標準輸入接收任何數量的整數,我需要爲輸入動態分配足夠的空間。動態內存分配爲未知的輸入數量(不realloc)

這對我來說不會是一個問題,除了兩個原因: 1)您不指定將有多少輸入,所以我不能只使用calloc和輸入的數量,而沒有通過讀取他們和計數。 2)我不能使用realloc來增加數組的大小。

有什麼方法可以統計輸入中有多少個整數,然後再次讀取它們並將它們放入數組中?

回答

0

使用linked-list。您可以根據需要分配新空間,而無需移動現有數據。

有什麼方法可以統計輸入中有多少個整數,然後再次讀取它們並將它們放入數組中?

我能想到的做到這一點的唯一方法是複製到tmpfile(),你算的話,rewind()文件並再次讀取。

+0

好主意,謝謝! – user2097845 2013-02-22 03:25:07

1

首先,你爲什麼不能使用realloc()

如果實在不行,可以考慮創建一個整數與列表元素鏈表定義是這樣的:

typedef struct tNumber 
{ 
    int Number; 
    struct tNumber* Next; 
} tNumber; 

是否有某種方式來算多少整數,在輸入,然後閱讀再次通過它們並將它們放入數組中?

沒有。

+0

是的,絕對使用鏈表。並感謝您回答我的問題。我不能使用realloc(),因爲我們的老師不允許我們使用。 – user2097845 2013-02-22 03:28:16