C 语言中的动态大小数组
考虑以下 C 代码:
<br>int大小 = 0;<br>int n = 0;<br>FILE* 图片;<p>图片 = fopen("test.jpg", "r");<br>fseek(图片, 0, SEEK_END);<br>siz = ftell(图片);</p><p>char Sbuf[大小]; // 错误:变长数组<br>fseek(picture, 0, SEEK_SET);<br>while (!feof(picture)) {</p><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];
delete [] Sbuf; // 完成后释放内存
注意事项
虽然动态分配提供了一种创建可变大小数组的方法,但它附带一些注意事项:结论
虽然长度可变C 不支持数组,但有几种替代方法可用于创建可以适应要存储的数据大小的动态数组。必须根据项目的具体要求和限制来选择最合适的选项。以上是如何在 C 中创建动态大小的数组来处理未知大小的文件?的详细内容。更多信息请关注PHP中文网其他相关文章!