由于我保证存在的原因,我正在逐个字符地读取输入,如果一个字符符合某些条件,我会将其写入动态分配的缓冲区。此函数将指定字符添加到指定字符串的“结尾”。读取缓冲区时,我读取了第一个“大小”字符。
void append(char c, char *str, int size)
{
if(size + 1 > strlen(str))
str = (char*)realloc(str,sizeof(char)*(size + 1));
str[size] = c;
}
该功能经过多次迭代开发,产生了“损坏的双链表”、“双重释放或损坏”等错误。下面是应该如何使用 append 的示例:
// buffer is a string
// bufSize is the number of non-garbage characters at the beginning of buffer
char *buft = buffer;
int bufLoc=0;
while((buft-buffer)/sizeof(char) < bufSize)
append(*(buft==),destination,bufLoc++);
它通常适用于一些看似任意数量的字符,然后因错误而中止。如果不清楚第二个代码片段在做什么,它只是从缓冲区复制到某个目标字符串。我知道有用于此的库方法,但有时我需要更好地控制确切复制的内容。
提前感谢您的任何见解。我难住了。