C 語言中的動態大小數組
考慮以下C 程式碼:
<br>考慮以下C 程式碼:<br><br><pre class="brush:php;toolbar:false">int大小= 0;<p>int n = 0;<br>FILE*圖片;<br></p>圖片= fopen("test.jpg", "r");<p>fseek(圖片, 0, SEEK_END);<br>siz = ftell(圖片);<br></p>char Sbuf[大小]; // 錯誤:變長數組<pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture); // do stuff with the buffer // memset(Sbuf, 0, sizeof(Sbuf));
while (!feof(picture)) {
}
;在這段程式碼中,目標是將檔案的內容讀入緩衝區,但緩衝區的大小未知直到檔案開啟並確定其大小。然而,C 語言不允許聲明可變長度數組。
可變長度數組的替代方案
<p>std::vector<char>; sbuf;<br></char></p>
<p>char* Sbuf = new char[siz];<br></p><p>delete [] Sbuf; //完成後釋放記憶體<strong></strong></p>注意事項<p></p>
結論雖然長度可變C 不支援數組,但有幾種替代方法可用於建立可以適應要儲存的資料大小的動態數組。必須根據項目的特定要求和限制來選擇最合適的選項。
以上是如何在 C 中建立動態大小的陣列來處理未知大小的檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!