C 言語の動的サイズ配列
次の C コードを考えてみましょう:
<br>int siz = 0;<br>int n = 0;<br>FILE* 画像;</p> <p>画像 = fopen("test.jpg", "r");<br>fseek(画像, 0, SEEK_END);<br>siz = ftell(画像);</p> <p>char Sbuf[siz]; // エラー: 可変長配列<br>fseek(picture, 0, SEEK_SET);<br>while (!feof(picture)) {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture); // do stuff with the buffer // memset(Sbuf, 0, sizeof(Sbuf));
}
このコードの目的は、ファイルの内容をバッファーに読み取ることですが、サイズはバッファのサイズは、ファイルが開かれてそのサイズが決定されるまで不明です。ただし、C 言語では、可変長の配列を宣言することはできません。
可変長配列の代替案
この問題に対処するには、次のような代替案がいくつかあります。
<br>std::vector<char> Sbuf;</char>
Sbuf.push_back(someChar);
<br>char* Sbuf = new char[siz];</li></ul> <p>delete [] Sbuf; // 完了したらメモリの割り当てを解除します<br>
考慮事項
動的割り当ては可変サイズの配列を作成する方法を提供しますが、それには次のような特徴があります。いくつかの注意点:
結論
可変長ですが配列は C ではサポートされていません。保存するデータのサイズに適応できる動的配列を作成するために利用できる代替アプローチがいくつかあります。プロジェクトの特定の要件と制約に基づいて、最も適切なオプションを選択することが重要です。
以上がC で動的にサイズ変更された配列を作成して、不明なサイズのファイルを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。