假定输入的字符串中只包含字母和*号.请编写函数fun,它的功能是:除了尾部的*号外,将字符串中的*号全部删除

如题所述

第1个回答  2012-09-02
void fun( char *str)
{
int i=0;
char *tmp=str ;
for ( ; str[i] ; i++ )
{
if ( str[i]=='*' )
{
if ( !str[i+1] )
{
*tmp++=str[i] ;
break;
}
}
else
{
*tmp++=str[i] ;
}
}
*tmp=0 ;
}追问

这个尾部是指像这样的尾巴874*******将这些*****全部删除

追答

这个函数运行完成后,输出的结果就是874*
是不是你想要的结果呢? 如果不是,你的输出结果应该是什么样子,请说明清楚。

追问

输入*****8**7**4*****的话应该输出*****8**7**4才对

追答

除了尾部的*号外,将字符串中的*号全部删除 这句话什么意思?

追问

那句话应该是将*号分成三部分,在数字前的,在数字中间的,在数字之后的,尾部就是指在数字之后的那部分了。谢谢。。。

追答

void fun( char *str)
{
char *tmp=str+strlen(str) ;
for ( ; tmp > str ; tmp -- )
{
if ( *(tmp-1) != '*' )
break ;
*(tmp-1)=0;
}
}

追问

错了吧。

追答

input *****8**7**4*****
output *****8**7**4
这是你说的,你测试了吗?

追问

看不懂你这个呀。能解释下么?

本回答被提问者和网友采纳
第2个回答  2012-09-02
string str = "1*32*ag****";
str = Regex.Replace(str, @"\*+(?=[^*])", "");
相似回答