全部问题 > 当前问题

不知道错在哪了,不能删除空格

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;


郭金迪 2017-2-4 11:51:26

共 2 个回答

qqq 2017-2-7 01:11:52

你的逻辑有些混乱啊,按照你的写法,你应该是遍历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;


qqq 2017-2-7 01:12:32

而且向你推荐标准答案的编程思路。

void fun (char *str)
{
int i=0;
char *p=str;
while(*p)
{
if(*p!=' ') /*删除空格*/
{
str[i]=*p;
i++;
}
p++;
}
str[i]='\0'; /*加上结束符*/
}

问题来自: 编程题真题