终于成功merge了:
任务内容
根据目标自行定义填充所给出的API,所给缓冲区类的定义为:
struct strbuf {
int len; //当前缓冲区(字符串)长度
int alloc; //当前缓冲区(字符串)容量
char *buf; //缓冲区(字符串)
};
共五个板块:
以下为我的实现:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "strbuf.h"
/*struct strbuf
{
int len; //长度
int alloc; //容量
char *buf; //字符串
};*/
/*2A*/
//初始化 sb 结构体,容量为 alloc
void strbuf_init(struct strbuf *sb, size_t alloc)
{
sb->buf=(char*)malloc(sizeof(char)*alloc);
sb->alloc=alloc;
sb->len=0;
}
//将字符串填充到 sb 中,长度为 len, 容量为 alloc
void strbuf_attach(struct strbuf *sb, void *str, size_t len, size_t alloc)
{
sb->alloc = alloc;
sb->len = len;
sb->buf=(char*)str;
}
//释放 sb 结构体的内存
void strbuf_release(struct strbuf *sb)
{
free(sb->buf);
}
//交换两个 strbuf
void strbuf_swap(struct strbuf *a, struct strbuf *b)
{
int cup1;
char*cup2;
cup1=a->len; /*交换len*/
a->len=b->len;
b->len=cup1;
cup1=a->alloc; /*交换alloc*/
a->alloc=b->alloc;
b->alloc=cup1;
cup2=a->buf; /*交换字符串*/
a->buf=b->buf;
b->buf=cup2;
}
//将 sb 中的原始内存取出,并获得其长度
char *strbuf_detach(struct strbuf *sb, size_t *sz)
{
char *ss;
ss= sb->buf;
*sz = sb->alloc;
return ss;
}
//比较两个 strbuf 的内存