可能的重复问题:
C语言中消除前导和尾随空格的简便方法?
在 C 语言中剪切字符串
我正在编写 C 语言中的 String trim 方法,这是我想出的代码。我认为它可以消除前导和尾随的空格,但我希望代码能更加简洁。你能提供改进建议吗?
void trim(char *String)
{
int i=0;j=0;
char c,lastc;
while(String[i])
{
c=String[i];
if(c!=' ')
{
String[j]=c;
j++;
}
else if(lastc!= ' ')
{
String[j]=c;
j++;
}
lastc = c;
i++;
}
这段代码看起来干净吗?
#include
#include
#include
char* trim(char* str)
{
size_t len = 0;
char *frontp = str;
char *endp = NULL;
if(str == NULL) { return NULL; }
if(str[0] == '\0') { return str; }
len = strlen(str);
endp = str + len;
while(isspace((unsigned char)*frontp)) { ++frontp; }
if(endp != frontp)
{
while(isspace((unsigned char)*(--endp)) && endp != frontp) {}
}
if(frontp != str && endp == frontp)
*str = '\0';
else if(str + len - 1 != endp)
*(endp + 1) = '\0';
endp = str;
if(frontp != str)
{
while(*frontp) { *endp++ = *frontp++; }
*endp = '\0';
}
return str;
}
int main()
{
char test[] = " trim me! ";
printf("Before: \"%s\"\n", test);
trim(test);
printf("After: \"%s\"\n", test);
}
- James Kolpacklastc
从未被赋值,则else if(lastc!= ' ')
会怎样。考虑在http://codereview.stackexchange.com/上发布。 - Mawg says reinstate Monica