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;
}不知道错在哪里,请高手指教一下 展开
#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;
}不知道错在哪里,请高手指教一下 展开
1个回答
展开全部
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询