void trim( char *str )

经典代码:

 1 #define IS_SPACE(c)  (' ' == c || '\t' == c)
 2 
 3 void trim (char *str) 
 4 { 
 5     char *b = str; 
 6     
 7     if (NULL == str) 
 8     {
 9         return; 
10     }
11     
12     if (IS_SPACE (*(b))) 
13     { 
14         while (*b) 
15         { 
16             if (IS_SPACE (*b)) 
17             {
18                 b++; 
19             }
20             else 
21             {
22                 break; 
23             }
24         } 
25         
26         while (*b) 
27         {
28             *str++ = *b++; 
29         }
30     } 
31     
32     do
33     { 
34         while (*b) 
35         {
36             b++; 
37         }
38         
39         b--; 
40         
41         while (IS_SPACE (*b)) 
42         {
43             b--; 
44         }
45         b[1] = '\0'; 
46     } 
47     while(false);
48     
49     return; 
50 } 
TRIM

 

思路:

若空字符串直接返回。

[字符串头部判断,无需处理则直接跳过]:

      处理头部空格(或tab):遍历字符串,找到第一个不为空格(或tab)的字符为新字符串的开始(结束不变),复制新字符串到源字符串。

处理尾部空格(或tab):遍历字符串到结束符,找到最后一个不为空(或tab)的字符位置,把它的下一个字符置为'\0'。

over!

posted on 2014-01-03 11:00  光标  阅读(388)  评论(0)    收藏  举报

导航