C语言实现去除字符串中空格的简单实例
在C语言开发中,经常需要清理字符串中的空白字符以进行后续处理。本文将详细介绍如何高效地去除字符串中的所有空格、仅去除左侧空格以及仅去除右侧空格。这些实现均采用原地操作(In-place),确保在不增加额外内存开销的情况下完成任务。
算法原理
去除字符串空格的核心在于利用双指针或单指针的移动来重新排列有效字符,并正确设置字符串终止符 /0。主要涉及以下三种场景:
- 去除全部空格: 遍历字符串,将非空格字符依次向前移动,覆盖原位置,最后补上终止符。
- 去除右边空格: 从字符串末尾向前查找,将连续的空格替换为
/0,直到遇到非空格字符为止。 - 去除左边空格: 找到第一个非空格字符的位置,将其及其后的所有有效字符向前平移,最后补上终止符。
完整代码实现
以下是针对上述三种需求的C语言函数实现。代码中包含了详细的注释,方便理解逻辑。
/* 去除字符串中所有空格 */
void VS_StrTrim(char *pStr) {
char *pTmp = pStr;
while (*pStr != '/0') {
if (*pStr != ' ') {
*pTmp++ = *pStr;
}
++pStr;
}
*pTmp = '/0';
}
/* 去除字符串右边空格 */
void VS_StrRTrim(char *pStr) {
char *pTmp = pStr + strlen(pStr) - 1;
while (*pTmp == ' ') {
*pTmp = '/0';
pTmp--;
}
}
/* 去除字符串左边空格 */
void VS_StrLTrim(char *pStr) {
char *pTmp = pStr;
// 跳过左侧空格
while (*pTmp == ' ') {
pTmp++;
}
// 将剩余字符前移
while(*pTmp != '/0') {
*pStr = *pTmp;
pStr++;
pTmp++;
}
*pStr = '/0';
}
注意事项
- 内存安全: 以上函数均假设传入的指针指向的是可修改的内存区域。如果字符串是只读常量,调用这些函数会导致程序崩溃。
- 库函数依赖:
VS_StrRTrim函数使用了strlen(),使用时需确保已包含<string.h>头文件。 - 组合使用: 如果需要同时去除左右两侧的空格,可以先调用
VS_StrLTrim,再调用VS_StrRTrim,或者直接使用VS_StrTrim(视具体需求对全空格的处理而定)。
以上就是C语言实现去除字符串中空格的详细内容,更多关于C语言字符串处理技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













