Delphi Trim函数C语言实现

Gavin [C/C++]

2008.11.14

用了一段时间Delphi,感觉里面的Trim函数很好用,却发现在C下没有这个函数,而自己又经常想在C下使用它,就仿Delphi里面的代码写了一个,以解燃眉之急:P

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下编译、运行通过;


评论

输入后可按 Ctrl+Enter 提交评论.