剥离C中的前导和尾随空格的最佳方法是什么?
以下是linux内核修剪的方法,称为strstrip():
char *strstrip(char *s) { size_t size; char *end; size = strlen(s); if (!size) return s; end = s + size - 1; while (end >= s && isspace(*end)) end--; *(end + 1) = '\0'; while (*s && isspace(*s)) s++; return s; }
它基本上是一个更好的格式化和错误检查版本,以前的海报说.
这个问题看起来好像可能是一个家庭作业问题,所以我会斜着回答:查找isspace(3)和strlen(3)的手册页并使用指针算法.另外,根据手头的问题,您可能需要malloc(3)来保存结果的空间.
不要忘记C字符串的表示包括一个尾随的0字节,通常写为'\ 0',不计入字符串长度的一部分.
这是使用isspace的版本:
char * trim(char *c) { char * e = c + strlen(c) - 1; while(*c && isspace(*c)) c++; while(e > c && isspace(*e)) *e-- = '\0'; return c; }