C语言 中怎么删除字符串空白符,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达十余年累计超上千家客户的网站建设总结了一套系统有效的营销解决方案,现已广泛运用于各行各业的客户,其中包括:成都石牌坊等企业,备受客户称赞。
/*************************************************************************
> File Name: trim.c
> Author:
> Mail:
> Created Time: Mon 12 Nov 2018 10:16:04 AM CST
************************************************************************/
#include
/*****************************************************************************
函数名 : 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才是正确的。
returns;
}
/*****************************************************************************
函数名 : 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);
}
voidmain(void)
{
charstr[1000]={" adf asdfasldf jjjjjjjjj iiii "};
charstr1[1000]={" adf asdfasldf jjjjjjjjj iiii "};
puts("Start main.");
printf("%s\n",strtrimc(str));
printf("%s\n",strtrim(str1));
}
运行结果
注意问题
1 常量区
刚开始的时候,我写的是char * s = "adfasdfasdfsf adfasdf adfasdfad ";
然后出现段错误,这里定义的s,保存在的是常量区,所以不能做赋值等操作,大家对字符串操作的时候要特别注意。
2 指针的返回值问题
原来我返回的是p1 ,p1 p2 s原来是相等的,但是经过一系列运算后,他们的值已经不相等了,他们的值如上面显示那样,所以返回值一直要返回s。
关于C语言 中怎么删除字符串空白符问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。