strtrim 函数我个人认为比较好理解,strtrim_fast是我从别人的论坛中借鉴过来的,个人不认为会在大部分的情况下strtrim_fast会比strtrim 快,举个简单的case,如果回溯的次数很低,strtrim的速度应该会比strstrim_fast的速度快
/*
* strtrim 去掉字符串前后的空格和制表符
*/
#include <stdio.h>
char * strtrim(char *s) {
char *p = s;
char *q = s;
while (*p==' ' || *p=='\t') ++p;
while (*q++=*p++)
;
q -= 2;
while (*q==' ' || *q=='\t') --q;
*(q+1) ='\0';
return s;
}
char * strtrim_fast(char *s) {
char *p = s;
char *q = s;
char *end = s;
while (*p==' ' || *p=='\t') ++p;
while (*q = *p) {
if (*q!=' ' && *q!='\t') end = q+1;
++q, ++p;
}
*end = '\0';
return s;
}
int main() {
char s[BUFSIZ] = " abd abc ";
puts(s);
strtrim(s);
puts(s);
}
本文介绍了两种去除字符串前后空白字符的方法:strtrim和strtrim_fast函数,并通过一个简单案例展示了这两种方法的实现过程及其可能的性能差异。
1046

被折叠的 条评论
为什么被折叠?



