使用Linux系統調用打開和讀取。該閱讀調用接受3個參數將文件讀入C中的char數組中:或者如何動態分配數組?
read(File descriptor, Buffer array, Size of the buffer array);
我的問題是有關說法3#。假設我有多個文本文件需要讀入我的緩衝區數組中。但據我所知C沒有像Vector或ArrayList或任何其他具有動態大小的結構。
有沒有簡單的方法來計算文件的大小,所以我知道我應該爲我的char數組分配多少空間?
使用Linux系統調用打開和讀取。該閱讀調用接受3個參數將文件讀入C中的char數組中:或者如何動態分配數組?
read(File descriptor, Buffer array, Size of the buffer array);
我的問題是有關說法3#。假設我有多個文本文件需要讀入我的緩衝區數組中。但據我所知C沒有像Vector或ArrayList或任何其他具有動態大小的結構。
有沒有簡單的方法來計算文件的大小,所以我知道我應該爲我的char數組分配多少空間?
通常的做法是讀入固定長度的緩衝區,然後將每個「記錄」複製到動態分配的結構中(例如malloc(),struct *或char *)。
正如cnicutar建議的那樣,您還可以「統計」文件,malloc()一個大小的緩衝區,並一次讀取文件。
爲什麼不'realloc? – oldrinb
我不知道這是否有資格作爲有效的,但它是「易」簡單地從那裏轉移到文件末尾,抓住長度:
fseek(readf, 0, SEEK_END);
fileLen=ftell(readf);
buffer=(char *)malloc(fileLen);
linux上的'man 2 stat'。 –