C语言字符串删除字符之间的星号问题

#include<stdio.h>#include<string.h>#defineN50voidfun(chara[],intn){inti,j,t=0,T[N]={0... #include<stdio.h>
#include<string.h>
#define N 50
void fun(char a[],int n)
{
int i,j,t=0,T[N]={0};char b[N];
for(i=0;i<n;i++)
{
if((a[i]!='*')&&(a[i+1]=='*'))
{
for(j=i+1;j<n;j++)
{
if(a[j]=='*')
T[t++]=j;
else
break;
}
//T[t]=-1;
printf("%d,%d\n",T[0],T[1]);
}

}
for(i=0;T[i]!=-1;T[i+1]--,i++)
{
b[i]=a[T[i]];
printf("%d,%c\n",T[i],a[T[i]]);
for(j=T[i];j<n;j++)
{
a[j]=a[j+1];
}

}

}
int main()
{
char a[N];int n;
printf("please enter words\n");
scanf("%s",a);
n=strlen(a);
// void fun(char a[],int n);
fun(a,n);
printf("%s\n",a);
return 0;
}不知道错在哪里,请高手指教一下
展开
 我来答
Rankabc
2014-03-12 · TA获得超过3561个赞
知道大有可为答主
回答量:3705
采纳率:59%
帮助的人:1085万
展开全部
#include<stdio.h>
int main()
{
char str[99]="";
int i=0,j=0;
gets(str);
for(;str[i]!='\0';i++)
if(str[i]!='*'){str[j]=str[i];j++;}
str[j]='\0';
puts(str);
return 0;
}
追问
你这是删除所有的星号。我要的是删除中间的星号。例如***abc***de***;运行后结果是***abcde***
追答
#include<stdio.h>
int main()
{
    char str[99]="**A*BC*D***";
    int i,j=0,k,n=0,flag=0;
    for(i=0;str[i]!='\0';i++)
        if(str[i]!='*')
        {
            str[j++]=str[i];
flag=1;
            n=i; //最后一个不是*的字符的位置
        }
else
{if(!flag)str[j++]=str[i];}
        for(k=0;k<i-n-1;k++)//i-n-1为后面*的个数
            str[j+k]='*';
        str[j+k]='\0';
        puts(str);
        return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式