如何在C中管理缓冲区字符串

时间:2016-01-09 06:09:03

标签: c string buffer

在我的程序中,我有一个全局缓冲区字符串,比如说

char buffer[110];

它从适配器读取并存储尚未进行的字符串。我有这样的事情:

while(...){
    readfromAdapter();
    copytoBuffer();
    processAndRemoveSomeCharsFromBuffer();
}

每次进行字符串的一部分时,我都希望将其从缓冲区中删除。我搜索了如何从C中的字符串中删除前几个字符,在大多数答案中我增加了指针,在本例中为buffer。但是,在这种情况下,这应该导致溢出。

我有两种方法。

一个是每次我用完缓冲区中的空间时,我释放旧空间并为其分配一些新空间。在这种情况下,我将缓冲区从char数组更改为全局字符指针。

另一个是每次进行一些字符处理时,我将旧的buffer+len复制到buffer

我该怎么做?

2 个答案:

答案 0 :(得分:2)

似乎ring buffer可以帮到你。

答案 1 :(得分:1)

动态分配和释放内存非常昂贵。如果分配的空间足够大以调用SYSCALL,那么它将花费您额外的时间。你应该使用你所拥有的空间,如果它对你的程序来说是实用的,那么从一个字符串到另一个字符串的复制会更好。