不知道错在哪了,不能删除空格
char *a;
int i,n;
n=strlen(*str);
for(i=0;i<n;i++)
if(*str!=' ')
{a[i]=str[i];
*(str++);
}
a[i]=0;
strcpy(*str,*a);
return;
你的逻辑有些混乱啊,按照你的写法,你应该是遍历str数组,将非空格字符放入a数组,那么a数组的下标当然不能还是用i计数,应该初始化一个j=0用于a数组下标的计数。而且你既然已经用for循环进行i的自增了,为什么还要用指针str自增呢。。我给你改了一下,你试试看。红色是我修改的部分。
char *a;
int i,n,j=0;
n=strlen(*str);
for(i=0;i<n;i++)
if(str[i]!=' ')
{a[j]=str[i];
j++;
}
a[j]=0;
strcpy(*str,*a);
return;
而且向你推荐标准答案的编程思路。
void fun (char *str)
{
int i=0;
char *p=str;
while(*p)
{
if(*p!=' ') /*删除空格*/
{
str[i]=*p;
i++;
}
p++;
}
str[i]='\0'; /*加上结束符*/
}