Code:/* // General trim function(s) // generalize the functions to remove white space // make the VALUE macro t use is_ctrl and is_space // for spaces only use is_space */ #define _IS_SP 1 /* is space */ #define _IS_CTL 32 /* Control */ extern char _Cdecl _ctype[]; /* Character type array */ /* is_ctrl() macro is_space() macro */ #define VALUE(c) (_ctype[(c) + 1] & _IS_CTL)|(_ctype[(c) + 1] & _IS_SP) char *ltrim(char *s) { int set=0; char *buf; char *keep; if(*s==0x00) return s; /* exit early */ buf=s,keep=s; while ( VALUE(*buf) ) buf++,set++; if(set){ /* make shortened s start at a new beginning */ while (*buf!=0x00)*keep++=*buf++; *keep=0x00; } return s; } char *rtrim(char *s) { char *buf; if(*s==0x00) return s; /* exit early */ buf=s; buf+=strlen(buf)-1; while(VALUE(*buf) )*buf--=0x00; /* shorten s */ return s; } char *trim(char *s) { if(*s==0x00) return s; /* exit early */ return ltrim( rtrim(s) ); /* trim = remove blanks both ends */ }




Reply With Quote