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还是正确的,为什么传递地址之后输出就是空白了呢? 展开
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还是正确的,为什么传递地址之后输出就是空白了呢? 展开
展开全部
因为你返回了一个局部变量的地址。非静态的局部变量的生命周期和作用域只限于自己这个函数,这个函数结束,变量就不在了,所对应的内存空间亦被回收。所以传递地址后成了空白。
你可以通过返回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;
}
你可以通过返回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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询