⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strbuf.c

📁 libbt-1.04
💻 C
字号:
#include "config.h"#include "util.h"#include <string.h>#ifdef HAVE_STRINGS_H#include <strings.h>#endif#include "strbuf.h"#ifndef max#define max(x,y) ((x)>(y)?(x):(y))#endif#if WIN32#   define vsnprintf _vsnprintf#endifkStringBuffer*kStringBuffer_create( kStringBuffer* _sb) {    kStringBuffer *sb;    if (_sb) {	sb = _sb;    } else {	sb = btmalloc( sizeof( kStringBuffer));    }    memset( sb, 0, sizeof( kStringBuffer));    return sb;}voidkStringBuffer_finit( kStringBuffer* sb) {    if (sb) {	if ( sb->buf)	    btfree( sb->buf);	sb->buf = NULL;	sb->bufsize = 0;	sb->cpos = 0;    }}intkStringBuffer_grow( kStringBuffer *sb, int len) {    sb->bufsize += len;    sb->buf = btrealloc( sb->buf, sb->bufsize);    DIE_UNLESS(sb->buf);    return 0;}voidsbclear( kStringBuffer* sb) {    kStringBuffer_finit( sb);}int sbputc( kStringBuffer *sb, char c) {    if (sb->cpos + 1 >= sb->bufsize) {	kStringBuffer_grow( sb, 1024);	if (!sb->buf) return -1;    }    sb->buf[sb->cpos++] = c;    sb->buf[sb->cpos] = 0;    return 0;}intsbstrcat( kStringBuffer *sb, char *str) {    return sbcat( sb, str, strlen(str));}intsbcat( kStringBuffer *sb, char *str, int len) {    DIE_UNLESS( len >= 0);    if (sb->cpos + len >= sb->bufsize) {	kStringBuffer_grow( sb, max( len+1, 1024));	if (!sb->buf) return -1;    }    memcpy(sb->buf + sb->cpos, str, len);    sb->cpos += len;    sb->buf[sb->cpos] = 0;    return 0;}intsbtail( kStringBuffer *sb, int start_char) {    DIE_UNLESS( start_char >= 0 && start_char <= sb->cpos);    if (start_char == 0) return 0;    if (start_char < sb->cpos) {	memmove( sb->buf, sb->buf + start_char, sb->cpos - start_char);    }    sb->cpos -= start_char;    sb->buf[sb->cpos] = 0;    return 0;}int sbindex( kStringBuffer *sb, int ch) {    int count=0;    char *s = sb->buf;    while (count < sb->cpos && *s != ch) s++, count++;    if (count < sb->cpos) return count;    return -1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -