了解C中的StrBuff

| 我需要知道这个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 []数组,这看待未签名的字符应该等效于Java中的字节。     
已邀请:
        它不是数组。它是一种使用动态内存分配来保存值(可能是字符串)的结构。如果使用数组分配一些数据,则在编译时确定数组大小。 例如:
char buf[10];
使用StrBuf之类的结构,当提供给定长度的字符串buf时,您可以分配所需的内存:
buf->str = (unsigned char *) realloc (buf->str, buf->len + 1);
    

要回复问题请先登录注册