分割字符串是处理字符串的操作中经常遇到的基本操作。
但是C语言中没有提供很好用的分割字符串的操作,常常需要自己写分割字符串的操作
在项目中,碰到了分割字符串的函数,遂记录一下
- 传入参数:源字符串,开始位置(包含开始字符),结束位置(不包含结束字符)
- 验证传入参数:开始位置<结束位置;开始位置<字符串长度;结束位置<字符串长度
- 分配内存:结束位置-开始位置+1
- 内存移动:memcpy
- 最后一位赋值为'\0'
- 返回分配内存
/* Split string out of src with range [left:right-1] */
static char *split_string(const char *src,
const size_t left, const size_t right) {
char *dest;
assert(left <= right);
assert(left < strlen(src)); /* [left means must be smaller */
assert(right <= strlen(src)); /* right) means can be equal or smaller */
dest = xmalloc(right - left + 1);
memcpy(dest, src+left, right-left);
dest[right-left] = '\0';
return dest;
}