C的Trim()函数


 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!!!微笑





猜你喜欢

转载自blog.csdn.net/JohnnyHu90/article/details/50422267