我需要知道这个 StrBuff 结构是否应该像数组一样运行。我看了又看,老实说不能仅仅因为指针语法而说出来——它看起来像一个数组它可以工作,而作为一个数组它不能工作。
我看到在第二种方法中,使用了 malloc() ,所以我猜测 buf-str uChar 应该是一个数组。
编码:
typedef struct {
unsigned char *str;
unsigned int len;
} StrBuf;
static StrBuf *
strbuf_new ()
{
StrBuf *buf;
buf = (StrBuf *) calloc (sizeof (StrBuf), 1);
buf->str = (unsigned char *) strdup ("");
return buf;
}
static void
strbuf_append (StrBuf *buf, unsigned char *data, int len)
{
int offset;
if (len <= -1)
len = strlen ((char *) data);
offset = buf->len;
buf->len += len;
buf->str = (unsigned char *) realloc (buf->str, buf->len + 1);
memcpy (buf->str + offset, data, len);
buf->str[buf->len] = '\0';
}
所以,从这些方法来看,我猜对于任何 C/C++ 资深人士来说,这应该是小菜一碟。
编辑:
我的目标是将应用程序(在此处使用此代码)转换为 Java 端口,但我一直很困惑我应该如何去做。我已经在 Java 中做了(大部分)同样的事情,只是这次使用 byte[] 数组,看看 unsigned chars 应该如何等同于 Java 中的字节。