C语言中去掉空格问题

程序改错题:
gc505.c通过接受键盘输入的字符串,通过调用函数trimspace(),实现去掉字符串的前空格和尾空格。
程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。
#include<string.h>
main()
{
char str[100];
void trimspace(char *);
gets(str);
trimspace(str);
puts(str);
}
/*------------Found Mistake Below------------*/
void trimspace(char *p)
{
char *q;
if(*p!='\0')
q=strlen(p);
else
return;
/*------------Found Mistake Below------------*/
for(;*q==' ';q--);
*q='\0';
for(q=p;*q==' ';q++);
strcpy(p,q);
return;
}

/*去除字符串右边空格*/
void
vs_strrtrim(char
*pstr)
{
char
*ptmp
=
pstr+strlen(pstr)-1;
while
(*ptmp
==
'
')
{
*ptmp
=
'\0';
ptmp--;
}
}
/*去除字符串左边空格*/
void
vs_strltrim(char
*pstr)
{
char
*ptmp
=
pstr;
while
(*ptmp
==
'
')
{
ptmp++;
}
while(*ptmp
!=
'\0')
{
*pstr
=
*ptmp;
pstr++;
ptmp++;
}
*pstr
=
'\0';
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-24
#include<string.h>
void trimspace(char *);
main()
{
char str[100];
gets(str);
trimspace(str);
puts(str);
}
/*------------Found Mistake Below------------*/
void trimspace(char *p)
{
char *q;
if(*p!='\0')
q=p+strlen(p)-1;
else
return;
/*------------Found Mistake Below------------*/
for(;*q==' ';q--);
*q='\0';
for(q=p;*q==' ';q++);
strcpy(p,q);
return;
}本回答被提问者采纳
第2个回答  2010-05-31
你自己都知道有两处错误,为什么不找找呢!懒!!!
相似回答