直接上代码
/*************************************************************************
> 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)
{
char str[1000] = {" adf asdfasldf jjjjjjjjj iiii "};
char str1[1000] = {" adf asdfasldf jjjjjjjjj iiii "};
puts("Start main.");
printf("%s\n",strtrimc(str));
printf("%s\n",strtrim(str1));
}