您的位置:首页 > 编程语言 > C语言/C++

C语言实现trim函数,若有问题,请指正

2015-09-16 15:32 323 查看
/*----------------------------------------------------------------
【函数介绍】: 去掉首尾指定字符
【入口参数】: sz	ascii码字符串(以'\0'结尾)
c		指定字符
【返回  值】: (无)
【出口参数】: sz	返回对应的去掉指定字符后的字符串
-----------------------------------------------------------------*/
static void trim(char *sz, char c)
{
if (sz == NULL || sz[0] == '\0')
return;

size_t nlen = strlen(sz);
size_t nbegin;	// 第一个!c字符下标
size_t nend;	// 最后一个!c字符下标
for (nbegin = 0; nbegin < nlen && sz[nbegin] == c; ++nbegin)
;
for (nend = nlen - 1; nend >= nbegin && sz[nend] == c; --nend)
;

if (nbegin < nend)			// 有多个!c字符
{
memcpy(sz, sz + nbegin, nend - nbegin + 1);
sz[nend - nbegin + 1] = '\0';
}
else if (nbegin == nend)	// 只有一个!c字符
{
char tmp = sz[nbegin];
memset(sz, 0, nlen);
sz[0] = tmp;
}
else						// 没有!c字符
memset(sz, 0, nlen);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: