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 }
思路:
若空字符串直接返回。
[字符串头部判断,无需处理则直接跳过]:
处理头部空格(或tab):遍历字符串,找到第一个不为空格(或tab)的字符为新字符串的开始(结束不变),复制新字符串到源字符串。
处理尾部空格(或tab):遍历字符串到结束符,找到最后一个不为空(或tab)的字符位置,把它的下一个字符置为'\0'。
over!
浙公网安备 33010602011771号