用了一段时间Delphi,感觉里面的Trim函数很好用,却发现在C下没有这个函数,而自己又经常想在C下使用它,就仿Delphi里面的代码写了一个,以解燃眉之急:P
查看代码 C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /************************************************ #函数功能: 去掉src字符串的前缀和后缀空格,存放于dst指向内存,并且返回该指针 #形式参数: dst: 用于保存结果返回的字符指针; src: 要去掉前后缀空格的源字符串指针; #返回值 : char*指针,指向函数处理后的结果字符串 #说 明: 使用该函数要加入:#include *************************************************/ char* Trim(char* dst, const char* src) { int l, r, i; r = strlen(src); for(l = 0; l < r && src[l] <= ' '; ++l); if(l >= r) dst[0] = '\0'; else{ for(; src[r-1] <= ' '; --r); for(i = l; i < r; dst[i-l] = src[i], ++i); dst[i-l] = '\0'; } return dst; } /************************************************ #函数功能: 去掉src字符串的前缀和后缀空格,并且返回指向结果字符串的指针 #形式参数: src: 要去掉前后缀空格的源字符串指针 #返回值 : char*指针,指向函数处理后的结果字符串 #说 明: 使用该函数要加入:#include 和 #include ,而且 由于函数内用了malloc在堆中分配内存,所以在外部函数使用该函数后记住 free掉该内存。 *************************************************/ char *Trim(const char* src) { int l, r, i; char* dst; r = strlen(src); dst = (char *)malloc(r*sizeof(char)+1); for(l = 0; l < r && src[l] <= ' '; ++l); if(l >= r) dst[0] = '\0'; else{ for(; src[r-1] <= ' '; --r); for(i = l; i < r; dst[i-l] = src[i], ++i); dst[i-l] = '\0'; } return dst; } |
说明:
1、上面的两个Trim函数实现功能一样,但是接口不同。上面一个调用者自己分配内存,自己释放内存,而下面那个在函数内用到动态分配内存,所以调用者调用后要释放内存,以防内存泄漏。
2、以上代码在VC6.0和BC3.1下编译、运行通过;