我可以在这段代码上使用一组(或更多)眼睛。我正在尝试从文件流(f1)读取一定数量的字节到数组/缓冲区(文件是文本文件,数组是 char 类型)。如果我读取大小“缓冲区 - 1”,我想“重新分配”数组并继续读取,从我离开的地方开始。基本上我正在尝试为未知大小的文件动态扩展缓冲区。我想知道的是:
- 我执行这个错误吗?
- 我将如何使用代码检查诸如“realloc”之类的故障条件?
- 当我编译关于“内置函数 realloc 的隐式声明......”时,我收到了很多警告(我也看到了关于我使用 read、malloc、strlen 等的警告。
- 当第二次(以及第三次、第四次等)调用“read()”时,它是否每次都从流的开头读取?那可能是我的问题是我似乎只返回第一个“buff_size”字符。
这是片段:
//read_buffer is of size buff_size
n_read = read(f1, read_buffer, buff_size - 1);
read_count = n_read;
int new_size = buff_size;
while (read_count == (buff_size - 1))
{
new_size *= 2;
read_buffer = realloc(read_buffer, new_size);
n_read = read(f1, read_buffer[read_count], buff_size - 1);
read_count += n_read;
}
当我正在学习如何进行这种类型的动态阅读时,我想知道是否有人可以陈述一些关于这种事情的最佳实践的简短事实。我假设这在专业领域出现了 TON(读取未知大小的文件)?谢谢你的时间。ALSO:当你们找到了做事的好方法(即解决此类问题的技术)时,您是否发现自己记住了您是如何做到的,或者可能将其保存以供将来参考(即解决方案相当静态)?