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); }