c++、去掉字符串尾部的空格

#include<iostream.h>char*mytrim(char*string);intmain(){charch[20],ch2[20],*ch1=ch2;co... #include<iostream.h>
char *mytrim(char *string);
int main()
{
char ch[20],ch2[20],*ch1=ch2;
cout<<"Please input a string "<<endl;
cin.getline(ch,20);
ch1=mytrim(ch);
cout<<"The string remove blank is:"<<ch1<<endl;
return 0;
}
char *mytrim(char *string)
{
char str[30];
char *str1=string,*str2=str;
int i,n=0;
while(*string!='\0')
{
string++;n++;
}
for(i=0;i<n-1;i++)
{
str[i]=*str1;
str1++;
}str[i]='\0';
return str2;
}
直接在mytrim中输出时str2还是正确的,为什么传递地址之后输出就是空白了呢?
展开
 我来答
antimoth
2013-12-22 · 超过36用户采纳过TA的回答
知道答主
回答量:80
采纳率:0%
帮助的人:69.8万
展开全部
因为你返回了一个局部变量的地址。非静态的局部变量的生命周期和作用域只限于自己这个函数,这个函数结束,变量就不在了,所对应的内存空间亦被回收。所以传递地址后成了空白。
你可以通过返回string来实现。而且你的mytrim里面for貌似也没有什么实际用处。可以参考这样实现
char *mytrim(char *string){
int n=0;
while(string[n]!='\0')
{
n++;
}
if(string[n-1]==' ')
string[n-1]=0;
return string;
}
tattackor
2015-10-25 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:898万
展开全部
1、可以使用string类的data返回字符串,能够自动去掉字符串尾部的空格
2、去掉字符串尾部空格的函数:
char *mytrim(char *string){
if(!string)
return NULL;
string str(string);
return str.data(); //string类的data返回字符串但没有结束符
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式