C 实现 删除字符串空白符的函数 strtrim
4 年前
· 来自专栏
C语言和C++语言
说在前面的话
字符串操作在很多C语言比赛里面都有涉及,最近公众号里面的C语言比赛,都是两个关于字符串操作的题目,希望大家认真看题目。
直接上代码
/*************************************************************************
> File Name: trim.c
> Author:
> Mail:
> Created Time: Mon 12 Nov 2018 10:16:04 AM CST
************************************************************************/
#include<stdio.h>
/*****************************************************************************
函 数 名 : strtrim
功能描述 : 删除行首、行尾空白符号
输入参数 : char *is
输出参数 : 无
返 回 值 : char *
调用函数 :
被调函数 :
修改历史 :
1.日 期 : 2018年11月12日
作 者 : strtrim
修改内容 : 新生成函数
*****************************************************************************/
char * strtrim(char *s) {
char *p = s;
char *q = s;
//去掉行首的空格
while (*p==' ' || *p=='\t')
++p;
while ((p != NULL)&&(q != NULL)&&(*p != '\0')&&(*p != '\0'))
*q++ = *p++;
//删除'\0'字符 注意是 -2 上面q++是先操作再自加
q -= 2;
//去掉行末的空格
while (*q==' ' || *q=='\t')
--q;
//给字符串添加字符结束标志
*(q+1) ='\0';
//这里的return s要注意看好
//因为p q经过一系列操作后,已经不是原来的位置,越界了 ,s还在原来位置,所以return s才是正确的。
return s;
/*****************************************************************************
函 数 名 : strtrimc
功能描述 : 删除字符串空白符,包括行首和行尾
输入参数 : char * s
输出参数 : 无
返 回 值 : char *
调用函数 :
被调函数 :
修改历史 :
1.日 期 : 2018年11月12日
作 者 : strtrim
修改内容 : 新生成函数
*****************************************************************************/
char * strtrimc( char * s )
char * p1 = s;
char * p2 = s;
while(*p1 != '\0')
while(*p1 == ' ' || *p1 == '\t')
p1 ++;
* p2 ++ = *p1 ++;
*p2 = '\0';
return (s);
void main(void)