C++ Code
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
#include <stdio.h>
#include <string.h> #include <ctype.h> void Trim( char *src); char* Trim2( char *src); int main( int argc, char *grgv[] ) { char str[] = " Good, Morning "; printf( "str=%s; strlen=%d\n", str, strlen(str) ); Trim2(str); printf( "str=%s; strlen=%d\n", str, strlen(str) ); return 0; } /***************************************************************************** ** 函数名称: Trim2 (依赖库函数) ** 功能描述: 给定一个C-String的变量(非字面值常量),去除首尾两端Blank的字符 ** 当前版本: ** 作 者: JohnnyHu ** 修 改: ** 输入参数: char *src ---> 带有'\0'的C-String ** 输出参数: char *src ---> 格式化后(去除首尾两端Blank的字符) ** 返回结果:src ** 使用条件:非字母值常量的C-String变量 ****************************************************************************/ char* Trim2( char *src) { char *ori_src = src; char *begin = src; char *end = src + strlen(src); if ( begin == end ) return ori_src; while ( isblank(*begin) ) ++begin; while ( isblank(*end) || !(*end)) --end; if ( begin > end ) { *src = '\0'; return ori_src; } //printf("begin=%1.1s; end=%1.1s\n", begin, end); while ( begin != end ) { *src++ = *begin++; } *src++ = *end; *src = '\0'; return ori_src; } /***************************************************************************** ** 函数名称: Trim ** 功能描述: 给定一个C-String的变量(非字面值常量),去除首尾两端Blank的字符 ** 当前版本: ** 作 者: JohnnyHu ** 修 改: ** 输入参数: char *src ---> 带有'\0'的C-String ** 输出参数: char *src ---> 格式化后(去除首尾两端Blank的字符) ** 返回结果:无 ** 使用条件:非字母值常量的C-String变量 ****************************************************************************/ void Trim( char *src) { char *begin = src; char *end = src; while ( *end++ ) { ; // Statement is null } if ( begin == end ) return; while ( *begin == ' ' || *begin == '\t' ) ++begin; while ( (*end) == '\0' || *end == ' ' || *end == '\t') --end; if ( begin > end ) { *src = '\0'; return; } //printf("begin=%1.1s; end=%1.1s\n", begin, end); while ( begin != end ) { *src++ = *begin++; } *src++ = *end; *src = '\0'; return; } |
结果:
如果有Bug, 敬请提出!Have a good Time!!!