Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1091673
  • 博文数量: 155
  • 博客积分: 2525
  • 博客等级: 大尉
  • 技术积分: 2242
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-05 20:52
文章分类

全部博文(155)

文章存档

2013年(1)

2012年(149)

2011年(5)

分类: C/C++

2012-07-17 16:39:56

怎样删去字符串尾部的空格?
C语言没有提供可删去字符串尾部空格的标准库函数,但是,编写这样的一个函数是很方便的。请看下例:
#include
# include
char * rtrim( char * );
int main()
{
//char * trail_str = "0123456789          "; 把字符串定义成这种形式时,运行程序的时候会出现异常
char trail_str[21] = "0123456789          ";
     
    printf( "Before calling rtrim(), trail_str is '%s'\n" , trail_str );
    printf( "and has a length of %d. \n" , strlen( trail_str ) );

    rtrim(trail_str);

    printf( "After calling rttim(), trail_ str is '%s'\n", trail_str );
    printf( "and has a length of %d. \n" , strlen( trail_str ) ) ;
    
    getchar();
    return 0;
}

/* The rtrim() function removes trailing spaces from a string. */
char * rtrim( char * str )
{
    int n = strlen(str) - 1; 

while( *( str + n ) == ' ' )
{
*( str + n-- ) = '\0';
}
return str;
}
在上例中,rtrim()是用户编写的一个函数,它可以删去字符串尾部的空格。函数rtrim()从字符串中位于null字符前的那个字符开始往回检查每个字符,当遇到第一个不是空格的字符时,就将该字符后面的字符替换为null字符。因为在C语言中null字符是字符串的结束标志,所以函数rtrim()的作用实际上就是删去字符串尾部的所有空格。







怎样删去字符串头部的空格?
C语言没有提供可删去字符串头部空格的标准库函数,但是,编写这样的一个函数是很方便的。请看下例:
#include  
#include

char *ltrim(char * ); 
char *rtrim(char * );
void main (void)
{
}

char * ltrim(char * str)
{
    strrev(str);    /* Call strrev to reverse the string. */
    rtrim(str);     /* Call rtrim to remvoe the "trailing" spaces. */
    strrev(str);    /* Restore the string's original order. */
    return str ;    /* Return a pointer to the string. */
}

char* rtrim(char* str)
{
}
在上例中,删去字符串头部空格的工作是由用户编写的ltrim()函数完成的,该函数调用了6.2的例子中的rtrim()函数和标准C库函数strrev()。ltrim()函数首先调用strrev()函数将字符串颠倒一次,然后调用rtrim()函数删去字符串尾部的空格,最后调用strrev()函数将字符串再颠倒一次,其结果实际上就是删去原字符串头部的空格。

阅读(4338) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~