解决了您的问题
我试图使此代码递归,但由于某些原因,它不起作用。
void compress_spaces(char *str)
{
char *dst = str;
for (; *str; ++str) {
*dst++ = *str;
if (isspace(*str)) {
do ++str; while (isspace(*str));
--str;
}
}
*dst = 0;
}
编辑:我试过这个:
void text_r(char *str)
{
char *dst = str;
if(*str==' ')return ;
*dst++ = *str;
if (isspace(*str)) {
do ++str; while (isspace(*str));
--str;
}//Missing brace from orig is this ok?
return text_r(str++);
}
没用。有什么想法吗?
您的dst指针与递归调用函数中的指针不同,请将其作为参数传递。
void text_r(char *dst, char *str) {
if (*str==' ')
return;
*dst++ = *str;
if (isspace(*str)
while (isspace(*str++));
else
++str;
return text_r(dst, str);
}
顺便说一句,你为什么要用递归来做这件事,我完全无法理解,它只会浪费时间和空间。
也许这个SO问题可能会对您有所帮助。它用正则表达式