有没有办法可以避免重写数组?在我的实现中,我必须将数据写入固定大小的缓冲区/数组buff[100]
并且每当我想要o / p数据时将使用buff[100]
我将写入buff[100]
(即下次我使用buff[100]
时,你会再次使用相同的buff[100]
吗?它应该附加数据。
答案 0 :(得分:2)
维护数组的索引。当您要写入的数据长度加上索引大于或等于100时,请写出缓冲区和数据。否则,将数据推送到该偏移量处的缓冲区中,并将数据长度添加到索引中。
例如,假设以下变量在范围内:
#define BUFFER_LENGTH 100
char buffer[BUFFER_LENGTH];
int buffer_index;
int output_fd;
你可以有这样的功能:
void write_buffered(char *data, int data_length)
{
if (data_length + buffer_index >= BUFFER_LENGTH) {
write(output_fd, buffer, buffer_index);
write(output_fd, data, data_length);
buffer_index = 0;
return;
}
memcpy(&buffer[buffer_index], data, data_length);
buffer_index += data_length;
}
这是C风格的,因为我比C知道C更好,但基本原则是合理的。显然,避免使用全局变量并将write()
调用更改为您正在使用的任何调用。
答案 1 :(得分:0)
既然你提到C ++,你为什么不使用std :: vector或类似的容器?它会更多更简单,更不容易出错。