怎样删去字符串尾部的空格?
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()函数将字符串再颠倒一次,其结果实际上就是删去原字符串头部的空格。
阅读(4341) | 评论(0) | 转发(0) |