用C语言实现的trim函数

trim函数在其他语言中比较常见,这里用C语言实现一个,不使用C语言的库函数。该例子中不需要额外的申请空间,算法的时间复杂度为O(1)。

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
#include <stdio.h>

char *trim(char * str)
{
char *buf1, *buf2;
int i;
if (str == NULL)
{
return NULL;
}

// 处理字符串前面的空格
for (buf1=str; *buf1 && *buf1==' '; buf1++);

// 将去掉前面空格的字符串向前复制
for (buf2=str, i=0; *buf1;)
{
*buf2++ = *buf1++;
i++;
}
*buf2 = '\0';

// 处理字符串后面的空格
while (*--buf2 == ' ')
{
*buf2 = '\0';
}
return str;
}

int main(int argc, char *argv[])
{
printf("trim(\"%s\") ", argv[1]);
printf("returned \"%s\"\n", trim(argv[1]));
return 0;
}