this module defines three functions: chomp() strip leading whitespaces chug() strip trailing whitespaces strip() strip trailing and leading whitespaces
Here is the code: /* Strip mode. */ #define STRIP_TRAILING 0 #define STRIP_LEADING 1 #define STRIP_BOTH 2 #define strip(s) strip2((s), STRIP_BOTH) #define chug(s) strip2((s), STRIP_TRAILING) #define chomp(s) strip2((s), STRIP_LEADING) char * strip2(char *s, int how) { char *p; /* Strip leading whitespaces. */ if (how != STRIP_TRAILING) { for (p = s; *p && *p == ' '; p++) ; memmove(s, p, strlen(p) + 1); } /* Strip trailing whitespaces. */ if (how != STRIP_LEADING) { for (p = s + strlen(s) - 1; p >= s && *p == ' '; p--) *p = '\0'; } return s; } and a simple test program: int main(void) { char buf[] = " a string "; printf("strip '%s'\n", strip(strdup(buf))); printf("chug '%s'\n", chug(strdup(buf))); printf("strip '%s'\n", chomp(strdup(buf))); return 0; } Best regards, -- Davide Angelocola (dfa)