伊利牛奶网站:求vc题目,去掉字符串后的空格。

来源:百度文库 编辑:高考问答 时间:2024/04/30 00:14:53
#include<iostream.h>
#include<string.h>
char *mystrim(char *string)
{
char *str;
int i=0;
while(string[i]!=' ')
str[i]=string[i],i++;
*str=0;
return str;
}
void main()
{
char *string="person ";
cout<<mystrim(string);
}

有什么错误?

错误在于你的算法是从左到右 搜索到空格后就截断字符串 并且没有合理的检测字符串是否已经结束

错误举例:
"1 22 33 "会被mystring转成为"1"
"123"会因为没有空格 程序也没有检测字符串最后的空0 程序访问到字符串以后的地方 可能导致内存泄漏

正确算法之一:从右向左搜索空格 如果是空格则改写为空0 并继续搜索左一位 否则停止

可以改成
char *mystrim(char *string)
{
int i = strlen(string) - 1;//i为最后一位字符的索引
while(string[i] == ' ') {
string[i] = '\0';
i--;
}

return string;
}

另外看你的程序 str[i]=string[i];这一句
估计你没有完成理解C语言指针的概念 希望注意