寻求Trim函数的C实现
我对C的指针用法还不是很自如,所以想征求一下大家的帮助。 问题点数:50、回复次数:5Top
1 楼Sachow(SC)回复于 2001-11-15 11:12:56 得分 0
要代码,不是原理,不用想得太复杂。Top
2 楼kingfish(工作很忙,很少来csdn...)回复于 2001-11-15 12:25:53 得分 50
/* 将字符串尾部的空格压缩掉 */
char *trim( s )
char *s;
{
register int l;
for( l=strlen(s); l>0 && isspace((u_char)s[l-1]); l--) s[l-1]='\0';
return(s);
}
/* 将字符串首部的空格压缩掉 */
char *ltrim( s )
char *s;
{
register char *p;
for( p=s; isspace((u_char)*p); p++ );
if( p!=s ) strcpy(s, p);
return(s);
}
Top
3 楼oldgameman(月光轮舞)回复于 2001-11-15 12:36:10 得分 0
关键在于判断空格在C中的表示方法,然后用指针将首和尾的空格去除Top
4 楼Sachow(SC)回复于 2001-11-15 13:58:39 得分 0
谢谢kingfish(今飞)!Top
5 楼Sachow(SC)回复于 2001-11-15 18:31:28 得分 0
加上一个(我在同事的帮助下做的),删除两边的空格:
char *trim(const char *s)
{
int l;
char *tmp;
if (s==NULL) return "";
while (*s<=' ') s++; /* 指针右移,直到没有空格的字符 */
tmp = (char *)malloc(strlen(s));
strcpy(tmp,s); /* 去除字符串左边的空格 */
l = strlen(tmp);
while (tmp[l-1]<=' '){
l--;
tmp[l]=0; /* 将字符串右边的空格填充为结束符 */
}
return tmp;
}
Top




